MATLAB曲线拟合:不同次数多项式拟合示例
本文将使用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进行曲线拟合,并比较了不同次数多项式拟合的效果。可以通过修改代码中的多项式次数和数据点来进行不同的实验。
原文地址: https://www.cveoy.top/t/topic/n3TA 著作权归作者所有。请勿转载和采集!