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
posted @ 2025-05-16 11:14  DuckingWJ  阅读(61)  评论(0)    收藏  举报