声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2146|回复: 1

[编程技巧] 多项式拟合.m文件

[复制链接]
发表于 2005-7-26 21:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<PRE>% General Polynomial Fitting Method

function Ans=polyfit2(x,y,order)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Polynomial Fitting Method
% x,y are two set of data, and order is the
% max degree of fitting polynomial
%
% FangQ
% 2000/11/30
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

n=4
if nargin==3
   n=order;
end

if size(x)~=size(y)
   warning('Bad input data');
end

n=n+1;
a=zeros(1,n);
A=zeros(n);
Y=zeros(n,1);

for i=1:n
   for j=1:n
      A(i,j)=sum(x.^(i+j-2));
   end
end

for i=1:n
   Y(i,1)=sum(y.*x.^(i-1));
end

Ans=inv(A)*Y;

XI=min(x):min(diff(x))/3:max(x);

Poly=num2str(Ans(1));

for i=2:n
   Poly=strcat(Poly,'+(',num2str(Ans(i)),'*x^',num2str(i-1),')');
end

disp(sprintf('Polynomial: \n\t %s',Poly));

FitError=sum((y-polyval(fliplr(Ans'),x)).^2);
disp(sprintf('\nTotal error is %f',FitError));

hold on;
plot(XI,polyval(fliplr(Ans'),XI),'r-',x,y,'o');
</PRE>
回复
分享到:

使用道具 举报

发表于 2005-8-1 11:10 | 显示全部楼层
挺好用的,就是要注意换行,
要不粘贴时不太好整。
哈哈。

[ 本帖最后由 xinyuxf 于 2007-7-3 09:04 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-13 21:51 , Processed in 0.065340 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表