Matlab向量与多项式
Matlab向量与多项式
向量
向量创建
使用'[]'创建向量,行内元素可以用空格、逗号分隔,用分号分割不同行
>> x=[1 2 3 4]
x =
1 2 3 4
>> x=[1;2 ;3 ;4]
x =
1
2
3
4
使用first:increment:last,来创建一个向量,表示从first开始,last结束,增量为increment。若增量为1,则increment可省略。
>> x=0:2:10
x =
0 2 4 6 8 10
使用linspace或logspace函数生成向量。(first,last,num)表示从first开始,last结束,共num个元素的向量,linsapce进行线性分割,而logspace进行对数分割
>> x=linspace(0,10,6)
x =
0 2 4 6 8 10
>> x=logspace(1,3,3)
x =
10 100 1000
向量引用
向量使用下标进行引用,语法类似python。可以进行单一下标访问和切片访问,注意Matlab中的区间属于左闭右闭区间,且下标从1开始。
>> x=[1 2 3 4 5];
>> x=(1:3)
x =
1 2 3
向量四则运算
向量对标量
向量对标量进行运算等于向量中每个元素单独对标量进行运算
clear all;
a=[1 2 3]
a=a+1
a=a-2
a=a*3
a=a/4
a =
1 2 3
a =
2 3 4
a =
0 1 2
a =
0 3 6
a =
0 0.7500 1.5000
向量对向量
用dot函数实现向量对向量的点积运算。
| 函数 | 说明 |
|---|---|
| dot(a,b) | 返回a,b的点积。a,b必须具有相同的维数 |
| dot(a,b,dim) | 返回a,b第dim维的点积 |
>> a=[1 2 3 4 5];
>> b=[5 4 3 2 1];
>> dot(a,b)
ans =
35
使用cross函数实现向量对向量的叉积
| 函数 | 说明 |
|---|---|
| cross(a,b) | a,b必须是长度为3的向量 |
| cross(a,b,dim) | 返回a,b在dim维的叉积,a,b在dim维的长度必须都等于3 |
>> a=[2 3 4];
>> b=[3 4 6];
>> cross(a,b)
ans =
2 0 -1
多项式
多项式创建
使用poly2sym函数,通过传入多项式系数向量来创建多项式。
>> p=[1 2 3 4 5];
>> poly2sym(p)
ans =
x^4 + 2*x^3 + 3*x^2 + 4*x + 5
可以通过poly函数,通过传入多项式的根向量来创建多项式
>> root=[-5 3+2i 3-2i];
>> p=poly2sym(poly(root))
p =
x^3 - x^2 - 17*x + 65
多项式运算
Matlab中没有直接针对多项式的运算函数,通过运算多项式系数向量来实现多项式运算
通过conv和deconv函数实现多项式系数向量的乘法和除法运算。需要注意deconv函数返回包含两元素的cell数组,第一个元素是商式,第二个元素为余式。
clear all;
p1=(1:5);
p2=(2:6);
conv(p1,p2)
[k,r]=deconv(p1,p2)
ans =
2 7 16 30 50 58 58 49 30
k =
0.5000
r =
0 0.5000 1.0000 1.5000 2.0000
通过polyder函数来对指定多项式系数向量进行求导
>> p=[2 3 8 -5 6];
>> a=poly2sym(p)
a =
2*x^4 + 3*x^3 + 8*x^2 - 5*x + 6
>> b=poly2sym(polyder(p))
b =
8*x^3 + 9*x^2 + 16*x - 5

浙公网安备 33010602011771号