一、线性
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')
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阶
5阶
2、线性
Matlab 曲线拟合之 polyfit 、polyval、poly2str 函数_matlab poly2str_草帽当家de的博客-CSDN博客
%线性
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('人口数据');