1 matlab中数组的输入
在matlab中写数组,直接输入元素的数组,应用中括号[],成行向量时,元素之间用空格或逗号隔开,成列向量时,分列处用分号隔开,也可以对相应行向量作转置,为在中括号外加单引号。可写入空向量,一维或多维向量。
例:
〉〉A=[]%回车
A =
[]
〉〉B=[1 2 3 4 5]
B=
12345
〉〉C=[1;2;3;4;5]
C=
1
2
3
4
5
〉〉D=[1 2 3 4 5]’
D=
1
2
3
4
5
在此引入三个简化输入数组的命令Var=(start_var,step,stop_var),该命令用于输入一维等差数列,start_var是数列起始数,step是间隔数,stop_var是预定终止数,当不输入step时,step默认为1。
例:
〉〉E=(1,4)
E=
1234
〉〉F=(1,2,4)
F=
13
Var=linspace(start_var,stop_var,n)该命令用于输入一维等差数列,start_var是数列起始数,stop_var是数列终止数,n是数组元素个数,当不输入n时,n默认为100。
例:
〉〉A=linspace(1,10,5)
A =
1.00003.25005.50007.750010.0000
Var=logspace(start_var,stop_var,n)该命令用于输入一维以十为底的指数函数形成的等比数列,10^start_var是数列起始数,10^stop_var是数列终止数,n是数列个数,当不输入n时,n默认为50。
〉〉B=logspace(1,3,3)
B =
101001000
在写多维数组时,可直接输入数组元素运用分号,逗号,空格来组合,也可以用一维数组的命令来组合写成多维数组。
例:
>> A=[1 2 3;4 5 6;7 8 9]
A =
123
456
789
>> B=[1:5;linspace(3,10,5);1 23 4 5
6]
B =
1.00002.00003.00004.00005.0000
3.00004.75006.50008.250010.0000
1.000023.00004.00005.00006.0000
>> C=[[1:3]' [linspace(2,3,3)]' [3 5
7]']
C =
1.00002.00003.0000
2.00002.50005.0000
3.00003.00007.0000
多项式
在matlab中多项式由行向量表示,其向量元素是多项式系数,由高阶到低阶。
例:
P(x)=x^3-4*x^2+5*x-2
在matlab中表示为:P=[1 -4 5
-2],当其中某一阶为零时,用0补齐。
解多项式的根,用roots命令。
例:解s(x)=x^3-6*x^2-72*x-27的根。
>> p=[1 -6 -72 -27];
>> r=roots(p)
r =
12.1229
-5.7345
-0.3884
在此,引入另一个命令poly,气相当于roots的逆命令。即通过根求解多项式的系数。
>> p=[1 -6 -72 -27];
>> r=roots(p)
r =
12.1229
-5.7345
-0.3884
>> ss=poly(r)
ss =
1.0000-6.0000-72.0000-27.0000
当输入多维数组时,通过poly返回的是其的特征多项式。
例:
>> A=rand(4)
A =
0.95010.89130.82140.9218
0.23110.76210.44470.7382
0.60680.45650.61540.1763
0.48600.01850.79190.4057
>> B=poly(A)
B =
1.0000-2.73341.2135-0.65430.1155
>> C=roots(B)
C =
2.32300.0914 + 0.4586i
0.0914 - 0.4586i
0.2275
>>
e=eig(A)%eig式求解行列式特征值的命令
e =
2.32300.0914 + 0.4586i
0.0914 - 0.4586i
0.2275对于多项式的运算,可用polyval求解定点的值。
例:
B =
1.0000-2.73341.2135-0.65430.1155
>> a=polyval(B ,2.5)
a =
2.4178
与polyval相似的另一函数是polyvalm,其可以接受二维数组形式的输入参数,对二维数组进行运算,但要求输入数组是行列相等的方阵。
例:
B =
1.0000-2.73341.2135-0.65430.1155
>> d=[1 2;3 4]
d =
12
34
>> c=polyvalm(B,d)
c =
105.8212153.2246
229.8370335.6581
对于多项式的乘法,可以运用*与.*进行运算以外,matlab还提供了专门的函数conv。而多项式的除法,作为乘法的逆运算,有命令deconv。其完整语法是[q,r]=deconv(v,u),q是商多项式,r是余式多项式,有v=conv(q,u)+r,当值有一个变量接受deconv的返回值时,返回q。
例:
>> v=[3 5 2 1 4];
>> u=[2 5 3];
>> [q,r]=deconv(v,u)
q =
1.5000-1.25001.8750
r =
000-4.6250-1.6250
>> result=deconv(v,u)
result =
1.5000-1.25001.8750