1
MATLAB与数字信号处理实验
1.4.6 1.6 MATLAB语言初步

1.6 MATLAB语言初步

在学习了前面的基础内容后,下面将介绍MATLAB语言的基础知识,进入MATLAB语言的学习中。

1.6.1 变量

在MATLAB中,变量名可以直接当变量使用。变量名必须以字母开头,由字母、下画线和数字组成,须严格区分大小写并只能识别前31个字符。

例如,在命令窗口中输入:

img27

1.6.2 矩阵及其运算

MATLAB语言的核心是矩阵,在MATLAB语言系统中,数组、矩阵和向量经常混用,几乎所有的数据处理和运算都是以矩阵为基本元素。下面就从矩阵开始介绍MATLAB语言的一些基本知识,使读者对MATLAB语言有一个初步的了解。

MATLAB以复数矩阵为基本的运算单位,向量和标量被看成是特殊的矩阵处理。向量看做一行或者一列的矩阵,而标量看做是1×1矩阵。

(1)向量是一维数组,要创建一个时间向量,可在命令窗口中输入:

img28

img29

注意,向量的第一个元素的下标是1,这与信号处理中的习惯,即从0开始有所区别。t=0:1:10生成0~10步长为1的共11个数,保存在t(1),t(2), …, t(11)中。

(2)矩阵相当于2维数组,如创建一个3×3矩阵,输入:

img30

调用矩阵元素:

img31

矩阵的运算遵循线性代数的法则。

行向量是只有1行的矩阵,列向量是只有1列的矩阵,标量是1行1列的矩阵。“[]”表示空矩阵。

1.矩阵的生成

矩阵的生成可用下面几种方法:

(1)逐个元素输入法 这是最简单,也是最通用的一种矩阵生成方法。例如:

>>x = [2 4 5; 3 6 7]%采用逐个元素输入,整个矩阵必须以方括号“ [] ”为其首尾;行与行之间必须用分号“;”或回车键“Enter”隔开;元素之间必须由逗号“ , ”或空格分隔。

img32

(2)冒号生成法这是通过“步长”设定,生成一维“行”数组的方法。

格式:x = a:inc:b

其中:a是数组的第一个元素; inc是相邻两个元素之间的间隔; b是数组的最后一个元素。

说明:

①若b-a是inc的整数倍,则最后一个元素是b;否则,小于b。

②若inc =1,又可以简写为x = a:b。

③inc可以取整数也可以为负数,取决于a, b的相对大小关系。

(3)定数线性采样点这是在设定的“总点数”下,均匀采样生成一维“行”数组。

格式:x = linspace(a, b, n)

其中:a, b分别为生成数组的第一个和最后一个元素。n是采样总点数。

说明:

①该指令生成一个1* n数组。

②该指令的作用与x = a:(b-a)/n:b相同。

(4)几种特殊矩阵:

①a=[] %空矩阵

img33

②a=zeros(2,3) %生成元素全为零的2×3矩阵

img34

③a=ones(2,3) %生成元素全为1的2×3矩阵

img35

④a=rand(2,5) %生成随机的2×5矩阵

img36

⑤矩阵的提取 这是通过一个矩阵生成另一个矩阵的方法。例如:A为一个矩阵,则B = A(2:3, 1:4)为A的子矩阵。

img37

img38

2.元素的访问

以实例说明。例如:

img39

①x(2) %访问数组x的第二个元素

img40

②x([1 2 4]) %访问数组x的第1, 2, 4个元素组成的子数组

img41

③x(1:3) %访问数组x的前3个元素组成的子数组

img42

④x(2:end) %访问第2个直到最后一个元素,end是最后一个元素下标

img43

⑤x(3:-1:1) %由前3个元素倒序组成的数组

img44

⑥x(find(x>0.5)) %由大于0.5的元素组成的子数组

img45

⑦x(3)=2 %给x的第3个元素重新赋值

img46

⑧x(3)=[]  %删除第3个元素

img47

⑨x(5)=3%加入第5个元素

img48

1.6.3 部分特殊变量和常量

部分特殊变量和常量如下:

ans        最近生成的无名结果

eps        浮点数相对误差

pi        3.1415926

j         虚数单位

i         虚数单位

inf        无穷大

NaN(Not a number)非数,如0/0,inf/inf等

1.6.4 运算符

1.扩充算术运算符

扩充算术运算符如表1-2所示。

表1-2 算术运算符

img49

注解:

①经典运算符的用法和普通的数学应用相同。

②“+”表示矩阵中对应元素相加(两个矩阵的维数必须相同)。例如:

img50

img51

③“-”表示矩阵中对应元素相减(两个矩阵的维数必须相同)。例如:

img52

④“ .* ”中多了一个点“.”,表示矩阵中对应元素相乘(两个矩阵的维数必须相同)。例如:

img53

⑤“ .\ ”或“./”中多了一个点“.”,表示矩阵中对应元素左除(右除)(两个矩阵的维数必须相同)。例如:

img54

⑥“ .^”中多了一个点“.”,表示矩阵中每个元素都作乘幂。例如:

img55

img56

说明:在这里特别要注意加点与不加点“.”的区别,以及这些算术运算符连接的两个阵列是否需要长度一致。

⑦矩阵的转置运算通过在矩阵变量后加“’”的方法来表示转置运算。例如:

img57

2.关系运算符

<   小于

<=  小于或等于

>   大于

>=  大于或等于

= =  等于

~=  不等于

运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。例如:

img58

3.逻辑运算符

&   与

|   或

~   非

Xor  异或

运算法则:若逻辑真,结果为1;若逻辑假,结果为0。例如:

img59

img60

4.其他

=  变量赋值

%  注释符

1.6.5 变量

MATLAB对变量名大小写比较敏感,因而在变量命名时,须特别注意:

(1)变量的第一个字符必须为英文字母,且不能超过31个字符。

(2)变量名可以包括下画线、数字,但是不能为空格符、标点。

1.6.6 创建和保存M文件

创建M文件是MATLAB中非常重要的内容。事实上,正是由于在MATLAB工具箱中存放着大量的M文件,使得MATLAB应用起来显得简单、方便,且功能强大。如果用户根据自己的需要,开发出适用于自己的M文件,不仅能使MATLAB更加贴近用户自己,而且能使MATLAB的功能得到扩展,来满足每位用户不同的需求。下面介绍M文件的创建与保存。

1.创建

点击File菜单下New菜单选项的M-File命令,可打开MATLAB的M文件编辑器窗口,如图1-20所示。

img61

图1-20 M文件编辑器

2.保存

单击M文件编辑器窗口工具栏中的Save图标,打开如图1-21所示的保存对话框,可对M文件进行保存。

img62

图1-21 M文件的保存

3.命令文件和函数文件

当用户要运行的命令较多时,如果直接在命令窗口中逐条输入和运行,有诸多不便。此时可通过编写命令文件来解决这个问题。另外,MATLAB的许多命令,需要用户通过编写函数文件来执行。

对于命令文件,在编写完文件后或开始编写前就可以为文件命名;函数文件不同于命令文件,其命名必须与function后面的函数名称完全相同。另外,函数文件与命令文件还有一个差别:命令文件中的变量是全局变量;而函数文件中的变量是局部变量。这意味着一旦运行完命令文件,所产生的变量都存放在工作内存中;而运行完函数文件后,这些内部变量都将被清除。在运行过程中,对于命令文件,只要在MATLAB工作区内键入文件的名字,或者在相应的M文件中点击运行按钮img63就可以运行,得到相应的运算结果;而对于函数文件,只能在所嵌入的程序中键入函数名称,代入相应的变量,在运行整个程序的时候才可以得到函数的运行结果,并且代入到程序中,才能最终得到期望的结果。