这样:
x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
p=polyfit(x,y,4);%于是拟合出的曲线就是p(1)x^4+p(2)x^3+p(3)x^2+p(4)x+p(5),想拟合成其它次数的多项式只需将4改为相应的次数即可
f=poly2sym(p);
xinterp=[2 4 7 13 16 18 20 22 24];
yinterp=subs(f,xinterp);
hold on;
plot(xinterp,yinterp,'o');
ezplot(f,[0,30])
注意事项
函数命令为:
a=polyfit(x,y,m) % x,y为对应的自变量,m为需要拟合的最高次幂
y=polyval(a,x); %根据拟合的函数得出x对应的因变量的值
函数表达形式为:f(x)=a1*x^m+...+am*x+a_m+1
polyfit(x,y,n)其中:x, y为已知数据点向量, 分别表示横、纵坐标,n为拟合多项式的次数, 结果返回m次拟合多项式系数, 从高次到低次存放在向量p中.参数p为拟合多项式 y=a1x^n+...+anx+a,共n+1个系数。
示例:
%多项式拟合
x = (0: 0.1: 7)';
y = sin(x);
p = polyfit(x,y,3) %p为拟合后的多项式系数
z=polyval(p,x);
plot(x,y,'r',x,z,'b')
其中p为拟合后的多项式系数,运行结果为:
p =0.0736 -0.7095 1.5250 -0.0296
问题在于你想拟合成什么函数。如果是简单的多项式函数可以用polyfit,程序如下
x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
p=polyfit(x,y,4);%于是拟合出的曲线就是p(1)x^4+p(2)x^3+p(3)x^2+p(4)x+p(5),想拟合成其它次数的多项式只需将4改为相应的次数即可
f=poly2sym(p);
xinterp=[2 4 7 13 16 18 20 22 24];
yinterp=subs(f,xinterp);
hold on;
plot(xinterp,yinterp,'o');
ezplot(f,[0,30])
楼主知道结果了吗?我现在也面临同样的问题