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程序实现多项式拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)