matlab代码实现
时间: 2024-09-24 14:05:13 浏览: 29
光谱样本划分matlab代码(KS,SPXY)
当然,你可以使用MATLAB内置的函数`polyfit`来快速实现一元二次拟合。以下是步骤和代码:
```matlab
% 给定的数据点
x = [19, 25, 31, 38, 44];
y = [19, 32.3, 49, 73.3, 97.8];
% 使用polyfit函数拟合二次多项式
p = polyfit(x, y, 2); % 第三个参数2表示我们要拟合一个二次函数
% 拟合的多项式表达式系数
a = p(1);
b = p(2);
c = p(3);
% 计算预测值
x_fit = linspace(min(x), max(x)); % 创建等间距的x值范围
y_fit = a*x_fit.^2 + b*x_fit + c;
% 绘制原始数据点和拟合曲线
plot(x, y, 'o', 'MarkerSize', 10, 'LineWidth', 1, 'DisplayName', 'Data Points');
hold on;
plot(x_fit, y_fit, '-r', 'DisplayName', 'Fitted Curve');
% 计算均方误差(MSE)
mse = mean((y - polyval(p, x)).^2);
% 显示结果
disp(['a = ', num2str(a)]);
disp(['b = ', num2str(b)]);
disp(['c = ', num2str(c)]);
disp(['Mean Squared Error (MSE): ', num2str(mse)]);
% 结果展示
legend('show'); % 显示图例
xlabel('x');
ylabel('y');
title(['Quadratic Fit with MSE of ', num2str(mse)]);
```
运行这段代码后,你会看到拟合后的二次曲线以及均方误差的结果。如果需要进一步帮助,例如理解代码细节或者其他相关问题,请告诉我。
阅读全文