本文将使用MATLAB演示如何进行曲线拟合,并比较不同次数多项式拟合效果。

首先,定义一组数据点:

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];

然后,使用polyfit函数进行不同次数的多项式拟合:

p1 = polyfit(x, y, 3); % 使用3次多项式拟合
p2 = polyfit(x, y, 4); % 使用4次多项式拟合
p3 = polyfit(x, y, 2); % 使用2次多项式拟合

接着,使用polyval函数计算拟合曲线上的y值:

X = 0:0.01:1; % 定义一个包含0到1之间以0.01为步长的坐标数组
y1 = polyval(p1, X); % 根据p1拟合结果计算y值
y2 = polyval(p2, X); % 根据p2拟合结果计算y值
y3 = polyval(p3, X); % 根据p3拟合结果计算y值

最后,使用plot函数绘制数据点和拟合曲线:

plot(x, y, 'ko', X, y1, 'b-', X, y2, 'r-', X, y3, 'm-');
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');

代码解释:

  • clear; 清空命令窗口中的所有变量和函数。
  • clf; 清空当前图形窗口。
  • clc; 清空命令窗口中的所有文本。
  • x = [0 0.1 0.2 0.3 0.5 0.8 1]; 定义x坐标数组。
  • y = [1 0.41 0.5 0.61 0.91 2.02 2.46]; 定义y坐标数组。
  • p1 = polyfit(x, y, 3); 使用3次多项式拟合x和y。
  • p2 = polyfit(x, y, 4); 使用4次多项式拟合x和y。
  • X = 0:0.01:1; 定义一个包含0到1之间以0.01为步长的坐标数组。
  • y1 = polyval(p1, X); 根据p1拟合结果计算y值。
  • y2 = polyval(p2, X); 根据p2拟合结果计算y值。
  • poly2str(p1, 'x') 将p1多项式系数转换为字符串。
  • poly2str(p2, 'x') 将p2多项式系数转换为字符串。
  • plot(x, y, 'ko', X, y1, 'b-', X, y2, 'r-') 绘制x和y的散点图,以及p1和p2的拟合曲线。
  • hold on 保持当前图形窗口不变,继续在窗口中添加图形。
  • p3 = polyfit(x, y, 2); 使用2次多项式拟合x和y。
  • y3 = polyval(p3, X); 根据p3拟合结果计算y值。
  • poly2str(p3, 'x') 将p3多项式系数转换为字符串。
  • plot(X, y3, 'm-') 绘制p3的拟合曲线。
  • title('Curve Fitting with different degree', 'FontName', 'New Times Roman', 'FontSize', 12); 添加图形标题以及字体和大小设置。
  • xlabel('x-axis', 'FontName', 'New Times Roman', 'FontSize', 12); 添加x轴标签以及字体和大小设置。
  • ylabel('y-axis', 'FontName', 'New Times Roman', 'FontSize', 12); 添加y轴标签以及字体和大小设置。
  • legend('Fitted pts', 'd=3', 'd=4', 'd=2') 添加图例,指定每个曲线对应的标签。
  • hold off 结束在当前图形窗口中继续添加图形的状态。

该代码示例展示了如何使用MATLAB进行曲线拟合,并比较了不同次数多项式拟合的效果。可以通过修改代码中的多项式次数和数据点来进行不同的实验。

MATLAB曲线拟合:不同次数多项式拟合示例

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

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