该段代码的作用是进行多项式拟合,并输出原函数曲线以及拟合多项式曲线。具体解释如下:

  1. clear; clc; clf; 分别用于清空命令窗口、清空工作空间以及关闭所有图形窗口。

  2. x = -1:0.01:1; xf = -1:0.2:1; 分别表示生成两个向量,其中x包含从-1开始,以0.01为步长,一直到1的所有值,xf包含从-1开始,以0.2为步长,一直到1的所有值。

  3. y = 1./(1+25*x.^2); yf = 1./(1+25*xf.^2); 分别表示生成两个向量,其中y包含根据原函数1/(1+25x^2)计算出来的所有y值,yf包含根据原函数1/(1+25x^2)计算出来的xf对应的y值。

  4. y1 = polyfit(xf,yf,3); 表示使用三次多项式进行拟合,即将xf和yf带入三次多项式中,得到拟合后的多项式系数向量y1。

  5. Y = polyval(y1,x); y2 = polyval(y1,xf); 分别表示将拟合后的多项式系数向量y1带入原函数中,得到拟合后的曲线上所有的y值Y,以及将拟合后的多项式系数向量y1带入xf中,得到拟合后的曲线上所有的y值y2。

  6. plot(x,y,x,Y,'m', xf,yf,'or',xf,y2,'*b'); 表示将原函数曲线(x,y)、拟合后的曲线(x,Y)、原数据点(xf,yf)、拟合后的数据点(xf,y2)都用图形进行展示。其中,'m'表示将拟合后的曲线用品红色(magenta)表示,'or'表示将原数据点用红色圆圈表示,'*b'表示将拟合后的数据点用蓝色星号表示。

  7. f = poly2str(y1,'x') 表示将三次多项式拟合后得到的多项式的系数向量表示成对应的多项式的习惯表达式,并赋值给变量f。

  8. title('Curve Fitting with d=3','FontName','New Times Roman','FontSize',12); xlabel('x-axis','FontName','New Times Roman','FontSize',12); ylabel('y-axis','FontName','New Times Roman','FontSize',12); 分别表示给图形添加标题、x轴标签和y轴标签,其中标题为'Curve Fitting with d=3',字体为'New Times Roman',字号为12。x轴标签为'x-axis',字体为'New Times Roman',字号为12。y轴标签为'y-axis',字体为'New Times Roman',字号为12。

  9. legend('Given curve','Fitting curve') 表示给图形添加图例,其中'Given curve'表示原函数曲线,'Fitting curve'表示拟合后的曲线。

代码示例:

clear;
clc;
clf;
x = -1:0.01:1;     % 从-1开始,以0.01为步长,一直到1的所有值。
xf = -1:0.2:1;
y = 1./(1+25*x.^2);
yf = 1./(1+25*xf.^2);
y1 = polyfit(xf,yf,3);
Y =polyval(y1,x);
y2 =polyval(y1,xf);
plot(x,y,x,Y,'m', xf,yf,'or',xf,y2,'*b');% 输出原函数曲线以及拟合多项式曲线.
f = poly2str(y1,'x')% 将三次多项式拟合后得到的多项式的系数向量表示成对应的多项式的习惯表达式.
title('Curve Fitting with d=3','FontName','New Times Roman','FontSize',12);
xlabel('x-axis','FontName','New Times Roman','FontSize',12);
ylabel('y-axis','FontName','New Times Roman','FontSize',12);
legend('Given curve','Fitting curve')
MATLAB 多项式拟合代码详解:可视化原函数与拟合曲线

原文地址: https://www.cveoy.top/t/topic/n4Dj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录