用MATLAB进行线性拟合的程序代码

用MATLAB进行线性拟合的程序代码,第1张

clc;clear;close all

U=[145,185,202,22,267,298];

V=[200,400,500,600,800,1000];

H=[256,435,514,602,796,952];

[AX,H1,H2]=plotyy(U,V,U,H,'plot');

set(H1,'Marker','o','line','none','color','k')

set(H2,'Marker','','line','none','color','r')

legend('容积','实际高度')

xlabel('电压值/V')

yl1=get(AX(1),'Ylabel')

set(yl1,'string','容积/L')

yl2=get(AX(2),'Ylabel')

set(yl2,'string','实际高度/cm')

p1=polyfit(U,V,1);

p2=polyfit(U,H,1);

VV=p1(1)U+p1(2);

HH=p2(1)U+p2(2);

hold on

[AX,HH1,HH2]=plotyy(U,VV,U,HH)

set(HH1,'color','k')

set(HH2,'color','r')

clc

disp(['V=',num2str(p1(1)),'U',num2str(p1(2))])

disp(['H=',num2str(p2(1)),'U',num2str(p2(2))])

运行结果

V=5130775U-5428718

H=451123U-397716

x=-10:10;%x的取值范围

n=length(x)%x的向量长度

a=2+rand(1,n);%产生一个以2~3之间的随机数组

b=5+rand(1,n);%产生一个以5~6之间的随机数组

y=a+bx^2

;%产生y

plot(x,y,'o')%画图,蓝色圈圈

pp=polyfit(x,y,2)%2次拟合,pp为回归系数

xx=-10:01:10;

%再产生新的xx

yy=polyval(pp,xx);%通过回归系数和xx得到yy

hold

on%

在同一个地方画图

plot(xx,yy,'r')%用回归系数和xx作图,红色

图形见:

x=[];

y=[];

y1=polyval(ployfit(x,y,5),x);

%拟合后各点的值

plot(x,y,'',x,y1,'--')

p=poly2sym(ployfit(x,y,5))%

拟合的多项式,其中5是拟合多项式的最高阶数!,可以改其他的数

题主的(4自变量1因变量)多元函数的拟合matlab程序。可以用nlinfit非线性回归函数来做(也可以用lsqcurvefit函数)。实现代码:

x1=[055 065 065 065 065 055 055 055 065]';

x2=[16 16 14 16 14 14 16 14 14]';

x3=[20 20 20 10 10 20 20 20 20]';

x4=[10 10 10 10 10 10 12 12 12]';

Y=[1848 3145 3337 3022 3188 197 163 1621 2534]';

X=[x1 x2 x3 x4];

n=length(x1);

a0=rand(1,5);

func=@(a,X)(a(1)+a(2)X(:,1)+a(3)X(:,2)+a(4)X(:,3)+a(5)X(:,4));

[a,r,J] = nlinfit(X,Y,func,a0);a

Y1=func(a,X);

[Y  Y1]

运行上述代码,可以得到

a1= -152778571412534;a2= 114823809522886;a3=  -0359047619087202 ;a4= 000441190476147387;a5=-023363095238449

多元函数表达式,y=a1+a2x1+a3x2+a4x3+a5x4

nlinfit与lsqcurvefit两者区别并不太大,前者用回归的方法来求解,而后者用最小二乘法来求解,两者都可以用于非线性函数和线性函数。

你在matlab下的commend window里输入cftool,然后在x data下选择t在y data下选择y。接着在右边的下拉框里选择custom equation,在custom equation下面输入c0+c1exp(-x/a1)+c2exp(-x/a2),然后它就输出结果了(cftool的左下边会出来结果)。我算的结果是a1=003832;a2=1194;c0=2506;c1=-0928;c2=6035;R方是09653 (你还可以在fit option里选择算法,推荐LM算法)。希望采纳哦!

以上就是关于用MATLAB进行线性拟合的程序代码全部的内容,包括:用MATLAB进行线性拟合的程序代码、用Matlab写拟合曲线的程序、编写MATLAB程序实现多项式拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10094069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存