一、polyfit和polyval简介
polyfit
和polyval
是MATLAB中用于多项式拟合和多项式求值的两个非常有用的函数。它们经常一起使用,以分析数据、建立模型以及进行预测。以下是这两个函数的简介:
1. polyfit
函数
polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。polyfit
函数用于根据给定的数据点(x, y坐标)拟合出一个多项式函数。其基本语法为:
p = polyfit(x, y, n)
其中,x
和y
是数据点的横纵坐标,n
是多项式的次数。p
是拟合出的多项式系数,按降幂排列,即p(1)
是最高次项系数,p(n+1)
是常数项。
2. polyval
函数
polyval
函数用于计算多项式函数在指定点的值。其基本语法为:
其中,p
是多项式系数向量,x
是指定的点(可以是一个数或一个向量),y
是多项式在这些点上的值。
下面给出一个综合运用polyfit和polyval进行数据预测时实例:
二、程序
clear all;
close all;
clc;
% 数据
x = (0: 1: 9)';
y = [0.1 1.2 3.9 9.5 16.1 26 37 52 66 83.5]';
p = polyfit(x, y, 2); % 使用二次多项式拟合
% 计算拟合后的多项式在原始数据点上的值
y_fit = polyval(p, x);
x1=10:1:12;
y1=polyval(p,x1);
% 绘制原始数据点、拟合曲线和预测点位置
plot(x, y, 'o', x, y_fit, '-',x1,y1,'+','linewidth',2);
legend('原始数据', '拟合曲线','预测值');
xlabel('x');
ylabel('y');
title('多项式拟合示例');
grid on;
xlim([0,16]);
ylim([-20,130]);
% 预测新点的值
x_new = [10 11]; %预测当x取3和10时的预测值
y_new = polyval(p, x_new);
disp(['当x取10和11时的预测值分别为:', num2str(y_new)]);
三、运行结果