matlab多项式相乘的法则_MATLAB基础教程(xlsread和
xlswrit函数+数。。。
1、xlsread和xlswrit函数
在MATLAB中经常会⽤到数据的读取,⾸先是从Excel中读取数据到MATLAB中去。下⾯给出原始Excel数据内容:
在MATLAB读取结果如下:
m=xlsread('fanjufei.xls',1,'A1:C3')m =    1    2    3    4    5    6    7    8    9
其中xlsread可以直接从Excel中读取⽂件,'fanjufei.xls'表⽰读取⽂件的名称,1表⽰位于sheet1;'A1:C3'表⽰读取数据的范围。xlswrite函数:
可以从MATLAB中写⼊数据到Excel中去,下⾯给出要写⼊数据:
clearclcn=[1 2 3 4;5 6 7 8;9 10 11 12];xlswrite('fanjufei.xls',n,3,'B2:E4')
2、数据拟合
2.1 多项式拟合
例如:有两组数据为x=[1 2 3 4 5 6 7 8 9];y=[9 7 6 3 -1 2 5 7 20];写出x与y的表达式;
clearclcx=[1 2 3 4 5 6 7 8 9];y=[9 7 6 3 -1 2 5 7 20];P=polyfit(x,y,3);xi=0:2:10;yi=polyval(P,xi);plot(xi,yi,x,y,'r*');
注释:polyfit(x,y,N),x、y为原始数据,N为拟合最⾼次幂,
polyval(P,xi),P为各项的系数,结果展⽰为:
P  0.148 -1.403 1.8536 8.2698 故多项式的结果为:
2.2 ⼯具箱拟合
打开⼯具→基本拟合,选定拟合的⽅式。
x=[1 2 3 4 5 6 7 8 9];y=[9 7 6 3 -1 2 5 7 20];plot(x,y,'r*');
得出结果如下:
2.3 ⾃定义拟合函数
例如:要拟合数据:
clearclcsyms tx=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071
结果:
cfun =      General model:    cfun(t) = a*cos(k*t)*exp(w*t)    Coefficients (with 95% confidence bounds):      a =      0.9987  (0.9836, 1.014)      k =      -1.00
注释:fittype是⾃定义拟合函数,cfun=fit(x,y,f)拟合数据x、y,x、y必须为列向量。
故结果为:
3、数值计算
3.1 多项式
(1)多项式表⽰⽅法
(2)多项式的运算
多项式乘除运算
计算代码:
clear clc%多项式相乘convu=[2 4 5 6];%多项式v=[10 20 30];%多项式p=[1 2 3];%多项式w=conv(u,v)  %conv为多项式相乘函数,也可以嵌套使⽤;m=conv(conv(u,p)结果:diff函数
w =    20    80  190  280  270  180m = 20        120        410        900        1400        1560        1170        540q =    2    4    5    6r =    0    0    0    0 多项式的导函数
1.  k=polyder(p),返回多项式p的导函数;
k=polyder(a,b),返回多项式a乘以b的导函数;
2.  [q,d]=polyder(b,a),返回多项式b整除a的导函数,其分⼦返回给q,分母为d;
clearclcx=[1 2 3 4];y=[1 2 3 4];z=polyder(x,y)
z =    6    20    40    60    50    24
多项式求值
y=polyval(p,x),代数多项式求值,若x为⼀数值,则求在该点的值;若为向量、矩阵,则求向量、矩阵中的每⼀个值;
y=polyvalm(p,x),矩阵多项式求值,要求x为⽅阵;
p=[1,2,3];x=1:5;y=polyval(p,x)
y =    6    11    18    27    38
多项式的根
函数roots:可以求出多项式等于0的根;
函数poly:可以通过多项式等于0的根,求出多项式;
p=[1 2 1];r=roots(p) %求p的根v=poly(r)  %求r根的多项式
r =    -1    -1v =    1    2    1
3.2 曲线拟合
曲线拟合⽤⼀个⽐较简单的函数去逼近⼀个未知的函数,曲线拟合最优的标准采⽤最⼩⼆乘法原理,拟合的结果使得误差的平⽅和最⼩。
在MATLAB上最常采⽤polyfit函数来求最⼩⼆乘拟合多项式的系数,再⽤polyval函数求出多项式在所给出点的值;
x=linspace(0,2*pi,50);y=cos(x);p=polyfit(x,y,6);t=linspace(0,2*pi,50);y1=polyval(p,t);plot(x,y,t,y1,'r*')
从图像上可以看出拟合⽐较好,红⾊星号都在曲线上;
3.3 数据插值
(1)⼀维数据插值
插值函数:yi=interp1(x,y,xi,method)
根据在x,y处的值,计算函数在xi处的值,其中xi的值不能⼤于x的值;
method插值⽅法:linear(线性插值)、nearest(最近点插值)、cubic(3次多项式插值)、spline(3次样条插值);
例2:下⾯为1900—1990每隔10年的⼈⼝普查数据:
t=1900:10:1990;
p=[75 91 105 123 131 150 179 203 226 249]
求在1985年⼈⼝数值;
t=1900:10:1990;p=[75 91 105 123 131 150 179 203 226 249];yi=interp1(t,p,1985)
得出1985年的⼈⼝数为:
yi =  237.5000
估计1900—2000年⼈⼝数值
t=1900:10:1990;p=[75 91 105 123 131 150 179 203 226 249];xi=1900:2000;yi=interp1(t,p,xi,'spline');plot(t,p,':o',xi,yi,'-r')
(2)⼆维数据插值
插值函数:Z1=interp2(X,Y,Z,XI,YI,method)
X,Y为原始采样点,Z为对应的采样值,XI,YI表⽰欲插值的点,method为插值⽅法与⼀维插值⽅法⼀样;
例3:为函数peaks插⼊更多的线条;
[X,Y]=meshgrid(-4:0.25:4);Z=peaks(X,Y);[XI,YI]=meshgrid(-4:0.125:4);ZI=interp2(X,Y,Z,XI,YI);mesh(X,Y,Z)hold onmesh(XI,YI,ZI+20)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。