2 MATLAB语言基础
2.1 数据结构
?????? MATLAB语言的赋值语句有两种:
变量名 = 运算表达式
[返回变量列表] = 函数名(输入变量列表)
?????? MATLAB支持变量和常量,更重要的,MATLAB支持IEEE标准的运算符号,如pi为圆周率, i,j为虚数单位, Inf表示无穷大,NaN表示0/0、0*Inf或Inf/Inf等运算结果,称为“非数”。MATLAB变量名应该由字母引导,后面可以跟数字、字母或下划线等符号。MATLAB对变量名字母是区分大小写的。
2.1.1 矩阵
?????? MATLAB 最基本的数据结构是复数矩阵。矩阵用方括号[ ]输入,里面的各行元素由分号分隔,而同一行的不同元素由逗号或空格分隔。如果赋值表达式末尾有分号,则其结果将不显示,否则将显示出全部结果。
??????? B=[1+9i,2+8i,3+7j; 4+6j 5+5i,6+4i; 7+3i,8+2j 1i]
??????? B =???????? ? 1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i???????? ? 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i?????????? 7.0000 + 3.0000i 8.0000 + 2.0000i?????????? 0 + 1.0000i
?其中,元素1+9i表示复数项。
?????? MATLAB和其他语言不同,它无需事先声明矩阵的维数。下面的语句可以建立一个更大的矩阵
B(2,5)=1B =?? 1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i?? 0??????? 0?? 4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i?? 0?????? 1.0000???? 7.0000 + 3.0000i 8.0000 + 2.0000i?????????? 0 + 1.0000i?? 0??????? 0
(注意: B(2,5)代表第二行五列为1;与原来的对应,前面的几个数不变,新增加的后面几行其余的全部为零。)
????? 对矩阵可以使用size()来测其大小,也可以使用reshape()函数重新按列排列。对向量来说,还可以用length()来测其长度。不论原数组A是多少维的,A(:)将返回列向量。
size(B)length(B)reshape(B,5,3) %用此函数时元素个数不可改变,而且“重新排布”是按“列”进行的。B(:)ans =3 5ans =5ans =1.0000 + 9.0000i 8.0000 + 2.0000i????????? 0 4.0000 + 6.0000i 3.0000 + 7.0000i????????? 0 7.0000 + 3.0000i 6.0000 + 4.0000i????????? 0 2.0000 + 8.0000i???????? 0 + 1.0000i? 1.0000 5.0000 + 5.0000i???????? 0????????????????????????? 0 ans =1.0000 + 9.0000i4.0000 + 6.0000i7.0000 + 3.0000i2.0000 + 8.0000i5.0000 + 5.0000i8.0000 + 2.0000i3.0000 + 7.0000i6.0000 + 4.0000i???????? 0 + 1.0000i???????? 0 ???????? 0 ???????? 0 ???????? 0 1.0000 ???????? 0
2.1.2 冒号表达式
?? ??????? 冒号表达式:s1:s2:s3
????? 冒号表达式是MATLAB里最具特色的表示方法。这一语句可以生成一个行向量,其中s1为向量的起始值,s2为步 长,而s3为向量的终止值。例如
S=0:.1:2*pi
将产生一个起始于0, 步距为0.1, 而终止于6.2的向量, 而不是终止于2*pi。如果写成S=0:-0.1:2*pi; 则不出现错误,而返回一个空向量。 >> s=(1:10)
s =
1 2 3 4 5 6 7 8 9 10
>> s(1:-1:10)
ans =
Empty matrix: 1-by-0
另外,注意下列函数表达式及输出以作对比
>> s(10:-