马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
这个我的一份读书笔记,希望对刚入门的朋友有所帮助。 参考资料matlab7.0从入门到精通 求是科技 编著
-------------------------------------------------程序略有改动------------------------------------------------------------------------
一 多项式函数及其运算
在matlab7.0中多项式是用向量来表示的:按降幂,缺项补零。
(1)多项式求值
>> P=[1 2 3];
>> polyval(P,[1 2;3 4])
ans =
6 11
18 27
(2)多项式乘法与除法
多项式的乘法用卷积conv来实现,除法用deconv来实现
>> P1=(1:3);
>> P2=(2:4);
>> P=conv(P1,P2)
ans =
2 7 16 17 12
意义:(x^2+2*x+3)*(2*x^2+3*x+4)=2*x^4+7*x^3+16*x^2+17*x+12
注意:在使用deconv的时候,有时候得到的是近似解。可以通过简单的向量验证
(3)导数与微分
k=polyder(P);返回多项式P的倒数
k=polyder(a,b);返回多项式a与b乘积的倒数
[q,d]=polyder(b,a);返回多项式b除以a的商的倒数,并以q/d格式表示
(原书此处有错,写成a除以b的商的倒数)
polyint(P,K);返回多项式P的积分,设积分常数项为K
polyint(P);返回多项式P的积分,设常数项为零
(4)多项式的求根和由根创建多相式
r=roots(c);返回多项式c的所有根r,r是向量长度等于根的个数的向量
p=poly(r);r是多项式的所有根,则返回的是多项式的行向量形式
P=ploy(A);A是N阶方阵,则返回N+1阶行向量形式,它是矩阵A的特征多项式
(5)部分分式展开
[r,p,k]=residue(b,a);求b/a的部分分式展开
[b,a]=residue(r,p,k);从部分分式到多项式向量
(6)多项式曲线拟合
p=polyfit(x,y,n);采用n阶多项式P来拟合数据x和y
(7)曲线拟合的图像用户接口
----Figure窗口的Tool\Basic Fitting菜单中--------
x=0:0.2:10;
y=0.25*x+20*sin(x);
plot(x,y,'ro');
------更多功能请使用cftool-----------------------
二 插值
(1)一维多项式插值
yi=interp1(x,y,xi,method);x必须是向量,y可是是向量也可以是矩阵。如果y是向量,
则必须与x具有相同的长度,这时xi可以是标量、向量和任意维矩阵,yi与xi具有
相同的大小;如果y是矩阵,则其大小必须是[n,d1,d2,...,dk](n是向量x的长度)
函数对d1*d2*d3...*dk组y值都进行插值。
yi=interp1(y,xi);默认x为1:n,其中n是向量y的长度。
yi=interp1(x,y,xi,method);输入变量method用于指定插值方法
yi=interp1(x,y,xi,method,'extrap');对超出插值范围的数据指定外推方法'extrap'
yi=interp1(x,y,xi,method,extrapval);对超出差值范围的数值返回extrapval的值
一般为0或者NaN(Not a Number)
PP=interp1(x,y,method,'pp');返回值pp为数据y的分段多项式形式。method指定产生
多项式的方法。
y=interpft(x,n);“一维快速傅立叶插值”
y=interpft(x,n,dim);在dim指定的维度上进行操作
interp1_exm.m
%用不同方法对一维数据进行插值,并比较其不同。
clear;
a=5;
x=0:1.2:10;
y=sin(x);
xi=0:0.1:10;
yi_nearest=interp1(x,y,xi,'nearest');
yi_linear=interp1(x,y,xi);%默认线性插值
yi_spline=interp1(x,y,xi,'spline');
yi_cubic=interp1(x,y,xi,'cubic');
yi_v5cubic=interp1(x,y,xi,'v5cubic');
yi_pchip=interp1(x,y,xi,'pchip');
hold on
subplot(231),plot(x,y,'ro',xi,yi_nearest),title('最临近插值')
subplot(232),plot(x,y,'ro',xi,yi_linear),title('线性插值')
subplot(233),plot(x,y,'ro',xi,yi_spline),title('三次样条插值')
subplot(234),plot(x,y,'ro',xi,yi_cubic),title('三次多项式插值')
subplot(235),plot(x,y,'ro',xi,yi_v5cubic),title('三次多项式插值matlab5')
subplot(236),plot(x,y,'ro',xi,yi_pchip),title('三次厄米多项式插值')
yi=interpft(y,a*length(y));
xii=0:1.2/a:10+1.2/a-eps;
figure(2)
plot(x,y,'ro',xii,yi),title('一维快速傅立叶插值')
-------------------------------------------------------------------------------------------------------------------------------------
[ 本帖最后由 花如月 于 2007-8-4 16:40 编辑 ] |