Matlab二乘法进行参数拟合

matlab二乘法进行参数拟合
主函数:

clear all;
close all;
clc;
%% 原始数据可视化
JiBie=[56 62 69 77 85 94 105];
Zongchengji=[305 327 358 380 394 418 436];
figure(1);
scatter(JiBie,Zongchengji,'b*');
grid on; xlabel('运动员体重');ylabel('运动员总成绩');
title('运动员总成绩与体重之间的数值关系');
xmin=min(JiBie)-5;
xmax=max(JiBie)+5;
ymin=min(Zongchengji)-10;
ymax=max(Zongchengji)+10;
axis([xmin xmax ymin ymax]);
hold on;
%% 最小二乘法计算数据
sum_xi_yi=0;
sum_xi_2=0;
for i=1:length(JiBie)
    sum_xi_yi=sum_xi_yi+JiBie(i)*Zongchengji(i);
    sum_xi_2=sum_xi_2+JiBie(i)^2;
end
y_ba=mean(Zongchengji);
x_ba=mean(JiBie);
sum_xi=sum(JiBie);
K=(sum_xi_yi-y_ba*sum_xi)/(sum_xi_2-x_ba*sum_xi);
B=y_ba-K*x_ba;
x1=xmin:0.01:xmax;
y1=K*x1+B;
plot(x1,y1,'g-.','linewidth',2);
%% 最小二乘法进行幂函数模型拟合
predict_cof = [0];% 预测的系数k = 0
[result_cof1,resnorm] = lsqcurvefit(@myfun,predict_cof,JiBie,Zongchengji);
% 使用拟合的系数计算y的值
ydata2 = myfun(result_cof1,JiBie);
plot(JiBie,ydata2,'b-.','linewidth',2);
hold on;
%% 最小二乘法进行幂函数改进模型拟合
predict_cof = [0,0];% 预测的系数k = 0
[result_cof2,resnorm] = lsqcurvefit(@myfun1,predict_cof,JiBie,Zongchengji);
% 使用拟合的系数计算y的值
ydata3 = myfun1(result_cof2,JiBie);
plot(JiBie,ydata3,'y-','linewidth',2);

myfun函数:

function F = myfun(cof,xdata)
F = cof(1)*(xdata.^(2/3));

myfun1函数:

function F = myfun1(cof,xdata)
F = cof(1)*(xdata-35).^cof(2);

你可能感兴趣的:(Matlab,二乘法,matlab,信息可视化,开发语言)