Matlab 曲线拟合之polyfit与polyval函数

https://www.cnblogs.com/farewell-farewell/p/7227516.html


p=polyfit(x,y,n)

[p,s]= polyfit(x,y,n)

说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。

 

多项式曲线求值函数:polyval( )

调用格式: y=polyval(p,x)

[y,DELTA]=polyval(p,x,s)

说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。

[y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。

有如下数据

时间t

1900

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

人口y

76

92

106

123

132

151

179

203

227

250

281

1. y与t的经验公式为 y = at^2 + bt + c

clear;
clf;                                                      %清除当前窗口
clc;
t = 1900:10:2000;                                         %时间t
y = [76 92 106 123 132 151 179 203 227 250 281];          %人口y

plot(t,y,'k*');
hold on;
% figure;                                 %重新开一个图
p1 = polyfit(t,y,2);
plot(t, polyval(p1, t));
axis([1900 2000 0 300]);                                  %图像xy轴范围

disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1(1)),'   b=',...
    num2str(p1(2)),'   c=',num2str(p1(3))]));

结果如下:

y=   0.0094289 t^2 - 34.7482 t + 32061.5711
a=0.0094289   b=-34.7482   c=32061.5711

MATLAB中,`polyfit`和`polyval`函数常用于曲线拟合多项式求值。 `polyfit`函数用于根据给定的数据点(x, y坐标)拟合出一个多项式函数,其数学基础是最小二乘法曲线拟合原理。该函数的调用格式如下: - `P = polyfit(X, Y, n)`:根据采样点`X`和采样点的函数值`Y`,产生一个`n`次的多项式`P`,`P`的返回值为幂次从高到低的多项式系数向量。 - `[P, S] = polyfit(X, Y, n)`:除了返回多项式系数向量`P`,还会返回采样点的误差向量`S`。 - `[P, S, mu] = polyfit(X, Y, n)`:`mu(1)`是`mean(X)`(平均值),`mu(2)`是`std(X)`(方差) [^1][^2]。 `polyval`函数则是根据`polyfit`函数得到的多项式系数向量求得对应的`y`值。其调用格式如下: - `y = polyval(p, x)`:返回对应自变量`x`在给定系数`P`的多项式的值。 - `[y, delta] = polyval(p, x, s)`:使用`polyfit`函数的选项输出`s`得出误差估计`Y DELTA`,它假设`polyfit`函数数据输入的误差是独立正态的,并且方差为常数,则`Y DELTA`将至少包含50%的预测值 [^2]。 以下是一个使用`polyfit`和`polyval`函数的示例代码: ```matlab clear;clc; num = 30; x = linspace(0,5,num); % 横轴数据 error = rand(1,num); % 生产误差值 a = x.^2+2*error; % 纵轴数据 p = polyfit(x,a,2); % 使用 polyfit函数 拟合横、纵轴数据得到拟合多项式,储存在p中 y = polyval(p,x); % polyval用于计算出每个横轴坐标(x)在拟合多项式(p)中对应的函数值 plot(x,a,'o',x,y,'-'); ``` 在这个示例中,首先生成了一组模拟数据,然后使用`polyfit`函数对数据进行二次多项式拟合,得到多项式的系数向量`p`,接着使用`polyval`函数根据系数向量`p`计算出每个横轴坐标`x`在拟合多项式中对应的函数值`y`,最后将原始数据和拟合曲线绘制在同一幅图中 [^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值