如何用matlab进行曲线拟合,就是已知x轴和y轴的数值,拟合出一个公式.

问题描述:

如何用matlab进行曲线拟合,就是已知x轴和y轴的数值,拟合出一个公式.
x=[0 28 64 103 123 144 217 291 429 504 553 657 711 783 838];
y=[31.53 30.43 29.38 28.80 28.13 27.59 25.53 24.3 22.83 21.57 21.86 29.49 34.52 41.76 44.6];
我实在是弄不出来~
1个回答 分类:综合 2014-10-18

问题解答:

我来补答
表达式必须自己估计.有很多表达式都能拟合出类似曲线.matlab里做曲线拟合的主要有(我经常用的)有这两个:polyfit和lsqcurvefit.前者专门对高次多项式拟合,后者则适用于绝大多数非线性拟合.根据描点判断可以用多项式拟合,我下面以二次多项式举例:
clear
x=[ 0    28    64   103   123   144   217   291   429   504   553   657   711   783   838]';
y=[   31.5300
   30.4300
   29.3800
   28.8000
   28.1300
   27.5900
   25.5300
   24.3000
   22.8300
   21.5700
   21.8600
   29.4900
   34.5200
   41.7600
   44.6000];
%用polyfit拟合
p=polyfit(x,y,2); %用2次多项式
figure(1);
title('拟合1')
hold on
plot(x,y,'+',x,polyval(p,x));
legend('原始值','拟合值');
%用lsqcurvefit拟合
f=@(b,x) b(1)+b(2).*x+b(3).*x.^2; %构造要拟合的函数
b=lsqcurvefit(f,[1,1,1],x,y);   %进行拟合
figure(2)
title('拟合2');
hold on
plot(x,y,'+',x,f(b,x));
legend('原始数据','拟合数据')
只画第一张图作为参考,剩下的程序会帮你做的.
 
 
展开全文阅读
剩余:2000