这段代码是在 MATLAB 环境下进行数据拟合和绘图的示例。以下是对代码的详细解释:

  1. 清空环境变量,关闭所有打开的图形窗口,清空命令窗口。

    clear;
    clf;
    clc;
    
  2. 定义两个数组 x 和 y,分别存储数据点的 x 坐标和 y 坐标。

    x = [0 0.1 0.2 0.3 0.5 0.8 1];
    y = [1 0.41 0.5 0.61 0.91 2.02 2.46];
    
  3. 使用 polyfit 函数对数据进行拟合,得到 3 次和 4 次多项式拟合曲线的系数,分别存储在 p1 和 p2 中。

    p1 = polyfit(x, y, 3);
    p2 = polyfit(x, y, 4);
    
  4. 定义一个数组 X,用于生成拟合曲线的横坐标,范围从 0 到 1,步长为 0.01。

    X = 0:0.01:1;
    
  5. 使用 polyval 函数根据多项式拟合曲线的系数 p1 和 p2,以及生成的横坐标数组 X,得到对应的纵坐标数组 y1 和 y2。

    y1 = polyval(p1, X);
    y2 = polyval(p2, X);
    
  6. 使用 poly2str 函数将多项式拟合曲线的系数转换成字符串形式,并在命令窗口输出。

    poly2str(p1, 'x')
    poly2str(p2, 'x')
    
  7. 使用 plot 函数绘制数据点和多项式拟合曲线,分别用黑色圆点、蓝色实线和红色实线表示。

    plot(x, y, 'ko', X, y1, 'b-', X, y2, 'r-')
    
  8. 使用 hold on 函数保留当前图形,以便在后续绘图时添加新的曲线。

    hold on
    
  9. 使用 polyfit 函数对数据进行拟合,得到 2 次多项式拟合曲线的系数,存储在 p3 中。

    p3 = polyfit(x, y, 2);  % 观察图形与抛物线接近,故采用 2 次曲线拟合
    
  10. 使用 polyval 函数根据 2 次多项式拟合曲线的系数 p3 和生成的横坐标数组 X,得到对应的纵坐标数组 y3。

y3 = polyval(p3, X);
  1. 使用 poly2str 函数将 2 次多项式拟合曲线的系数转换成字符串形式,并在命令窗口输出。
poly2str(p3, 'x')
  1. 使用 plot 函数绘制 2 次多项式拟合曲线,用紫色实线表示。
plot(X, y3, 'm-')
  1. 使用 title、xlabel、ylabel 和 legend 函数添加图形标题、横坐标标签、纵坐标标签和图例。
title('Curve Fitting with different degree', '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('Fitted pts', 'd=3', 'd=4', 'd=2')
  1. 使用 hold off 函数释放当前图形,绘图结束。
hold off

通过以上步骤,代码实现了对给定数据点的多项式拟合和绘制,并展示了不同次数多项式拟合的效果。

MATLAB 数据拟合与绘图代码详解:从入门到精通

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

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