数组及其运算
>> a=[1:3;4:6;7:9];
x=5;
y=ones(3)*5;
xa=x<=a
xa =
0 0 0
0 1 1
1 1 1
>> a=magic(5)
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> a(:,3)=zeros(5, 1)
a =
17 24 0 8 15
23 5 0 14 16
4 6 0 20 22
10 12 0 21 3
11 18 0 2 9
向量生成
当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号(😃 和linspace函数来生成等差元素向量。
>> v=10:5:60
v =
10 15 20 25 30 35 40 45 50 55 60
>> v2=linspace(10, 60, 11)
v2 =
10 15 20 25 30 35 40 45 50 55 60
all 和 any
>> a1=all(a(:, 1)<10)
a1 =
0
>> a1=all(a(:,1)>3)
a1 =
1
>> all = any(a(:, 1)>10)
all =
1
>> all = any(a>10)
all =
1 1 0 1 1
find函数
>> a=[1:5];
>> a=1./a
a =
1.0000 0.5000 0.3333 0.2500 0.2000
>> f1 = find(a)
f1 =
1 2 3 4 5
>> f2 = find(abs(a)>0.4|abs(a)<0.23)
f2 =
1 2 5
数组运算和多项式运算
生成多项式
>> p=[1 -5 6 -33]
p =
1 -5 6 -33
>> poly2sym(p)
ans =
x^3 - 5*x^2 + 6*x - 33
特征多项式输入法
MATLAB提供了poly函数,使用它可以由矩阵的特征多项式创建多项式。使用该方法生成多项式时,其首项的系数必为1
>> A=[3 1 4 1;5 9 2 6; 5 3 5 8;9 7 9 3]
A =
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
>> p=poly(A);
>> disp(poly2sym(p))
x^4 - 20*x^3 - 16*x^2 + 480*x + 98
多项式运算
获取多项式参数
>> a=[1 2 3; 2 3 4; 3 4 5]
a =
1 2 3
2 3 4
3 4 5
>> p1=poly(a)
p1 =
1.0000 -9.0000 -6.0000 -0.0000
按照参数生成多项式
>> poly2sym(p1)
ans =
x^3 - 9*x^2 - 6*x - 8399472656541061/2535301200456458802993406410752
由根创建多项式
>> root=[-5 -3+4i -3-4i];
>> p=poly(root)
p =
1 11 55 125
>> poly2sym(p)
ans =
x^3 + 11*x^2 + 55*x + 125
多项式求值
MATLAB提供了两个函数来对多项式进行求值,即polyval和polyvalm。前者以数组为计算单位,后者以矩阵为计算单位。
>> p=[1 -20 -16 480 98];
>> x=4;
>> polyval(p, x)
ans =
738
在MATLAB 语言里,多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots§。
>> p=[1 0 3 12 -7];
>> roots(p)
ans =
0.7876 + 2.4351i
0.7876 - 2.4351i
-2.0872 + 0.0000i
0.5121 + 0.0000i