[matlab] 1.拟合

x = [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:0.01:10;
yi=polyval(p,xi);
plot(x,y,'r>',xi,yi)


for i=1:9
    text(x(i)+0.1,y(i)+0.02,num2str(i)) ; %加上0.1使标号和点不重合,标记每个点
end

也可以使用GUI工具箱来产生多项式拟合

选定matlab 工作空间中x,y的值

然后点击matlab菜单栏的绘图,选择如下  或者直接在命令行窗口输入cftool

 也可以指定函数进行拟合

拟合函数 f(t)=acos(kt)e^(wt)
syms t
x=[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;0.059;0.08;0.032;-0.015;-0.02];%数据必须为列向量
subplot(1,2,1)
plot(x,y,'r<');
% 拟合函数 f(t)=acos(kt)e^(wt)
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
polyfun=fit(x,y,f); %显示拟合函数
xi=0:0.01:20;
yi=polyfun(xi);
subplot(1,2,2)
plot(x,y,'rs',xi,yi,'.');

 

拟合函数为 f(t)=0.9987cos(1.001t)e^-0.2066t
原文地址:https://www.cnblogs.com/clemente/p/9512483.html