本次开启新的系列,关于用Matlab实现常见信号和函数的生成和变换。
同时如果没有MATLAB基础,那么可以跟着本文一步一步学习Matlab的相关操作,本文旨在记录在信号与系统课程中MATLAB的学习过程,欢迎大家指出错误和补充!
本章为信号与系统实验序章,MATLAB的简单入门,本文没有特别的难点,较难的地方在本文都有较详细的说明,请放心食用!
有空可以来看看我的个人博客:http://shadowl.top/
下面开启正文
一.MATLAB相关简介和安装。
(一)MATLAB简介。
1.What is MATLAB ?
MATLAB(矩阵实验室) 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
2.Why is it called MATLAB ?
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
3.MATLAB主要提供以下功能:
- 可用于技术计算的高级语言
- 可对代码、文件和数据进行管理的开发环境
- 可以按迭代的方式探查、设计及求解问题的交互式工具
- 可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等的数学函数
- 可用于可视化数据的二维和三维图形函数
- 可用于构建自定义的图形用户界面的各种工具
- 可将基于MATLAB的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM以及Microsoft Excel)集成的各种函数
以上就是MATLAB的大概介绍,总的来说就是这个软件是为了数值分析和矩阵计算而被广泛运用,当然MATLAB如今的功能已经十分的强大,软件的从当初1M左右也变为现在的十几接近二十个G,MATLAB也成为了三大数学软件之一,在各个领域都有广泛的应用。
无论你是出于什么目的来学习MATLAB,我们都应该细致的开始,深入的进行。
下面开始MATLAB的学习过程吧!
(二)Matlab的安装
1.正规途径
软件官网:https://ww2.mathworks.cn/products/matlab.html
下面为官网的最新报价
MATLAB正版的价格十分昂贵,如果大家能够支付得起,直接下载官网上的文件按步骤安装就好。
2.非正规途径
非正规途径MATLAB的安装方式在网络上有很多,大家跟着网络上的教程就可以实现完整的安装。
如果是个人的使用的话,不涉及商用,那么我们不用去在意途径的正规与否,但如果条件允许的话,尽量使用正版软件。
在安装方面,我们不费太多篇幅:
分享一个很详细的MATLAB获取和安装教程链接:https://mp.weixin.qq.com/s/ky6vCBJrj4q-qlgf7CT5gg
二.MATLAB简单使用教学。
(一)使用命令行。
安装成功后,显示的页面应如下
页面相当简洁,命令行区域是我们主要操作的区域,MATLAB主要是靠命令的输入完成相应的工作;而旁边的工作区是我们用来观察我们创建的一些变量和函数的工作情况,我们创建的变量在创建成功后会在工作区有相应的显示。
而在左上角有一个新建脚本,如果你是有丰富的编程经验的程序员,那么脚本的方式可能更和你的胃口,如果你不了解脚本,那也无妨,开始的操作并不需要脚本和函数的建立,熟悉命令行的操作就可以完成很多的工作,在后面的信号与系统的实验中当我们用到脚本和函数的建立时,我们自然会记录下如何使用它。
1.简单的命令。
下面我们介绍一些简单的命令:
(1)退出和中断
exit,quit % 结束MATLAB会话。程序完成,如果没有明确保存,则变量中的数据消失 Ctrl-c % 中断一个MATLAB任务,但会话并没有结束
其实这两个命令用处不是很大,大部分时间我们用不上它
MATLAB命令中会有一些特殊的功能键,恢复指令、删除字符等过于基础,这里不再写出。
(2)清除和清屏。
clc % 清屏,清除命令行区的内容 clear % 清除工作区
(3)多维矩阵的建立。
MATLAB的中文名为矩阵实验室,它的数据的基本格式就是矩阵。
科普一下矩阵:在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。
如果你是一个科幻影迷的话,对Matrix这个单词应该并不陌生。
我也想像Neo一样在网络空间里上天入地!
二维矩阵是一个带有以行和列排列的元素的矩形表。如果有m行、n列,这个矩阵的大小就是m×n。多维矩阵的维数大于二,就是说其大小为m×n×......×p。
矩阵这方面的知识我们不去详细解释,学过线性代数的话对矩阵应该是十分熟悉。
a.标量的指定,如果写入x=7,则在屏幕打印为:
>> x=7 x = 7
b.如果仅写入7,则结果变为:
>> 7 ans = 7
c.2×3维情况下一个矩阵的定义可以逐行给出元素:
>> A=[1 2 3 4 5 6] A = 1 2 3 4 5 6
d.也可以在同一行用分号来分隔行以给出所有的元素(**常用**):
>> A=[ 1 2 3; 4 5 6] %构建一个2×3的矩阵
A =
1 2 3
4 5 6
在命令后加一个分号可以禁止打印出结果。
e.一个行向量和一个列向量的定义:
>> rowvec=[1.2 3.2 4]
rowvec =
1.2000 3.2000 4.0000
>> colvec=[2.7;3.4;-9.2] %用分号隔开
colvec =
2.7000
3.4000
-9.2000
f.若想显示一个变量的值,输入它的名字即可:
>> A A = 1 2 3 4 5 6
创建过的变量并没有消失,可以在工作区查看它的状态:
g.也可以逐个地分配元素:
>> B(1,1)=1; >> B(1,2)=7; >> B(2,1)=-5; >> B(2,2)=0 B = 1 7 -5 0
h.通过间距来创建矩阵:
例如想创建一个公差为1的首项为0,末项为10的数列:
>> C=[0 : 1 : 10] C = 0 1 2 3 4 5 6 7 8 9 10
通过 变量名=[首项 : 公差 :末项] 便可以方便的创造数列,这个方式也是MATLAB模拟连续函数的方式,在后面的信号函数绘制中,我们会大量的用到它。
(3)算数表达式和数学函数。
a.矩阵的简单运算。
在MATLAB中通常的惯例是书写数字。对十进制数,使用科学计数法可以十分大和十分小的数。例如3.14和1.23E-6,这里,后者代表1.23×10-6。
MATLAB有算数运算符的扩展集,它们是:
1)^ 幂
2)* 乘
/ 右除(正常除)
\ 左除
3)+ 加
- 减
这是按顺序给出的运算,1是最高优先级。在带相同优先级的运算符表达式中,按从左到右的顺序执行。圆括号()能够用于改变优先级次序。
在算术运算符前加 . 表示元素之间的计算,与矩阵的运算不同,如:.* 表示点乘,./表示点除,需要特别注意。
b.MATLAB中常用的预定义变量:
pi %返回Π,即3.141592653589793,只是一个近似值
inf %定义为1/0。当出现被零除时,MATLAB就返回inf,并不中断执行而继续计算。
NaN %定义为“Not a Number”,表示非数值,可能是inf/inf。
i,j %定义为√-1,虚数单位。
c.MATLAB常用的数学函数:
sqrt(x) %开平方
real(z) %复数z的实部
imag(z) %复数z的虚部
conj(z) %复数z的共轭复数
round(x) %四舍五入至最近整数
fix(x) %无论正负,舍去小数至最近整数
rem(x,y) %求x除以y的余数
gcd(x,y) %整数x和y的最大公因数
lcm(x,y) %整数x和y的最小公倍数
exp(x) %自然指数
pow2(x) %2的指数
log(x) %以e为底的对数
log2(x) %以2为底的对数
log10(x) %以10为底的对数
常用的三角函数:
sin(x) %正弦函数
cos(x) %余弦函数
tan(x) %正切函数
asin(x) %反正弦函数
acos(x) %反余弦函数
atan(x) %反正切函数
用于向量的常用函数有:
min(x) %向量x的元素的最小值
max(x) %向量x的元素的最大值
mean(x) %向量x的元素的平均值
median(x) %向量x的元素的中位数
std(x) %向量x的元素的标准差
diff(x) %向量x的相邻元素的差
sort(x) %对向量x的元素进行排序
length(x) %向量x的元素个数
norm(x) %向量x的欧氏长度
sum(x) %向量x的元素总和
prod(x) %向量x的元素总乘积
cumsum(x) %向量x的累计元素总和
cumprod(x) %向量x的累计元素总乘积
关于矩阵的运算和性质,可参考线性代数的知识,这里不加说明。
基本的MATLAB的命令大部分都在上面,还有一些函数我们在之后的篇章中会边学边用,希望对大家有帮助。
MATLAB慕课推荐:https://www.coursera.org/learn/matlab/home/welcome
之后的实验一部分题目来自于这个课程的课后习题
有时间强烈推荐学习此课程
有空可以来看看我的个人博客:http://shadowl.top/
请发表评论