[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