1 matlab中数组的输入
在matlab中写数组,直接输入元素的数组,应用中括号[],成行向量时,元素之间用空格或逗号隔开,成列向量时,分列处用分号隔开,也可以对相应行向量作转置,为在中括号外加单引号。可写入空向量,一维或多维向量。
例:
〉〉A=[] %回车
A =
[]
〉〉B=[1 2 3 4 5]
B=
1 2 3 4 5
〉〉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=
1 2 3 4
〉〉F=(1,2,4)
F=
1 3
Var=linspace(start_var,stop_var,n)该命令用于输入一维等差数列,start_var是数列起始数,stop_var是数列终止数,n是数组元素个数,当不输入n时,n默认为100。
例:
〉〉A=linspace(1,10,5)
A =
1.0000 3.2500 5.5000 7.7500 10.0000
Var=logspace(start_var,stop_var,n)该命令用于输入一维以十为底的指数函数形成的等比数列,10^start_var是数列起始数,10^stop_var是数列终止数,n是数列个数,当不输入n时,n默认为50。
〉〉B=logspace(1,3,3)
B =
10 100 1000
在写多维数组时,可直接输入数组元素运用分号,逗号,空格来组合,也可以用一维数组的命令来组合写成多维数组。
例:
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> B=[1:5;linspace(3,10,5);1 23 4 5
6]
B =
1.0000 2.0000 3.0000 4.0000 5.0000
3.0000 4.7500 6.5000 8.2500 10.0000
1.0000 23.0000 4.0000 5.0000 6.0000
>> C=[[1:3]' [linspace(2,3,3)]' [3 5
7]']
C =
1.0000 2.0000 3.0000
2.0000 2.5000 5.0000
3.0000 3.0000 7.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.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
>> B=poly(A)
B =
1.0000 -2.7334 1.2135 -0.6543 0.1155
>> C=roots(B)
C =
2.3230 0.0914 + 0.4586i
0.0914 - 0.4586i
0.2275
>>
e=eig(A) %eig式求解行列式特征值的命令
e =
2.3230 0.0914 + 0.4586i
0.0914 - 0.4586i
0.2275 对于多项式的运算,可用polyval求解定点的值。
例:
B =
1.0000 -2.7334 1.2135 -0.6543 0.1155
>> a=polyval(B ,2.5)
a =
2.4178
与polyval相似的另一函数是polyvalm,其可以接受二维数组形式的输入参数,对二维数组进行运算,但要求输入数组是行列相等的方阵。
例:
B =
1.0000 -2.7334 1.2135 -0.6543 0.1155
>> d=[1 2;3 4]
d =
1 2
3 4
>> c=polyvalm(B,d)
c =
105.8212 153.2246
229.8370 335.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.2500 1.8750
r =
0 0 0 -4.6250 -1.6250
>> result=deconv(v,u)
result =
1.5000 -1.2500 1.8750