一、线性

1、多项式

利用matlab实现非线性拟合(三维、高维、参数方程)_matlab多元非线性拟合_hyhhyh21的博客-CSDN博客

eg1: 

x=0:0.5:10;
y=0.4*x.^5+0.03*x.^4-0.5*x.^3+2.0*x.^2-0*x-4+100*(rand(size(x))-0.5); % 定义一个5阶的函数
p=polyfit(x,y,5); % 多项式拟合P的结果是系数 y=ax^5+bx^4+cx^3+dx^2 +ex+f   n 表示的是阶数p =a b c d e f

x2=0:0.05:10;
y2=polyval(p,x2); % 将x 带入到polyfit 的系数中,计算出新的点
figure();
subplot(1,2,1)
hold on
plot(x,y,'linewidth',1.5,'MarkerSize',15,'Marker','.','color','r')
plot(x,0.4*x.^5+0.03*x.^4-0.5*x.^3+2.0*x.^2-0*x-4,'linewidth',1,'color','g')
hold off
legend('原始数据点','理论曲线','Location','southoutside','Orientation','horizontal')
legend('boxoff')
box on
subplot(1,2,2)
hold on
plot(x2,y2,'-','linewidth',1.5,'color','r')
plot(x,y,'LineStyle','none','MarkerSize',15,'Marker','.','color','k')
hold off
box on
legend('拟合曲线','数据点','Location','southoutside','Orientation','horizontal')
legend('boxoff')

Matlab 多项式拟合-LMLPHP

eg2:

>> x = [0  10 20 30  40  50   60  70  80  90 100 110  120];
y = [5  1 7.5  3 4.5 8.8 15.5 6.5  -5 -10  -2  4.5  7 ];
>> 

matlab 9阶

Matlab 多项式拟合-LMLPHP

 5阶Matlab 多项式拟合-LMLPHP

2、线性

Matlab 曲线拟合之 polyfit 、polyval、poly2str 函数_matlab poly2str_草帽当家de的博客-CSDN博客

 Matlab 多项式拟合-LMLPHP

	
%线性
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);%  y=kx+b
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('人口数据');
05-05 09:38