• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab的拟合函数polyfit()函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 matlab的多项式拟合:

polyfit()函数

 功能:在最小二乘法意义之上,求解Y关于X的最佳的N次多项式函数。

clc;clear;
close all;
x=[1    2    3    4    5];
y=[2.7    7.4    20.0    54.5    148.4];
r=corrcoef(x,y) ;%两个变量的相关系数
a=polyfit(x,y,2)   
x1=1:0.1:5;
P=polyval(a,x1);%a是多项式拟合后返回的系数
figure(1);hold on;plot(x,y,\'r*\',x1,P,\'b-.\');

注:a是返回的两次多项式的系数,返回结果是:14.3071  -51.9929   45.2000,这意味着拟合的多项式是:

 y=45.2000+(-51.9929)*x+14.3071*x^2

 

 

 

 

clc;clear;
close all;
x=[1    2    3    4    5];
y=[2.7    7.4    20.0    54.5    148.4];
r=corrcoef(x,y) ;
%a=polyfit(x,y,2)   
b=polyfit(x,y,3) 
c=polyfit(x,y,4) 
x1=1:0.1:5;
%Pa=polyval(a,x1);%a是多项式拟合后返回的系数
Pb=polyval(b,x1);%a是多项式拟合后返回的系数
Pc=polyval(c,x1);%a是多项式拟合后返回的系数
%figure(1);hold on;plot(x,y,\'r*\',x1,Pa,\'b-.\');
figure(1);hold on;plot(x,y,\'r*\',x1,Pb,\'r-.\');
figure(1);hold on;plot(x,y,\'r*\',x1,Pc,\'g-.\');

 

注:红色是三次拟合的结果。

绿色是四次拟合的结果。

 例1:

clc;clear;
close all;
x=[1    2    3    4    5];
y=[2.7    7.4    20.0    54.5    148.4];
r=corrcoef(x,y) ;
%a=polyfit(x,y,2)   
[b s]=polyfit(x,y,3) 
%c=polyfit(x,y,4) 
x1=1:0.1:5;
%Pa=polyval(a,x1);%a是多项式拟合后返回的系数
Pb=polyval(b,x1);%a是多项式拟合后返回的系数
%Pc=polyval(c,x1);%a是多项式拟合后返回的系数
%figure(1);hold on;plot(x,y,\'r*\',x1,Pa,\'b-.\');
figure(1);hold on;plot(x,y,\'r*\',x1,Pb,\'r-.\');
%figure(1);hold on;plot(x,y,\'r*\',x1,Pc,\'g-.\');

注:[b s]=polyfit(x,y,3) %这里返回的s是个结构体,s中的normr表示拟合的残差的二范。


 

以下例子的来源:https://blog.csdn.net/qq_33591755/article/details/82453757

有如下数据

时间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);
h=polyval(p1, t);
plot(t, h);
axis([1900 2000 0 300]);                                  %图像xy轴范围

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

 2. y与t的经验公式为y = a e^(bt)

clear;
clf;                                                      %清除当前窗口
clc;
t = 1900:10:2000;                                         %时间t
y = [76 92 106 123 132 151 179 203 227 250 281];          %人口y
yy = log(y);                                              %指数基尼必需的线性化变形
p2 = polyfit(t,yy,1);
b = p2(1);
a = exp(p2(2));
y2 = a * exp(b*t);                                       %指数拟合函数式
plot(t,y,\'rp\',t,y2,\'k-\');
grid off;
xlabel(\'时间t\');
ylabel(\'人口数(百万)\');
title(\'人口数据\');

 


 

 

 

 

 


 

最佳拟合次数的确定:

clc;clear;
close all;
x=[1    2    3    4    5];
y=[2.7    7.4    20.0    54.5    148.4];
for i=1:6
    y2=polyfit(x,y,i);
    Y=polyval(y2,x);%计算拟合函数在x处的值。
    if sum((Y-y).^2)<0.1
        c=i  
        break;
    end
end

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中@,^,#,$分别表示什么?发布时间:2022-07-18
下一篇:
Delphi按下F1不能出现帮助文档的解决方法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap