matlab中,关于多元函数的拟合matlab程序如何书写?(4自变量1因变量)

matlab中,关于多元函数的拟合matlab程序如何书写?(4自变量1因变量),第1张

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

x1=[0.55 0.65 0.65 0.65 0.65 0.55 0.55 0.55 0.65]'

x2=[1.6 1.6 1.4 1.6 1.4 1.4 1.6 1.4 1.4]'

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

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

Y=[1.848 3.145 3.337 3.022 3.188 1.97 1.63 1.621 2.534]'

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= -1.52778571412534;a2= 11.4823809522886;a3=  -0.359047619087202 ;a4= 0.00441190476147387;a5=-0.23363095238449

多元函数表达式,y=a1+a2*x1+a3*x2+a4*x3+a5*x4

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

matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。一般我们做社会调研或科学研究时,会得到很多实验数据。当需要研究两个变量之间的关系时,经常要用到曲线拟合。曲线拟合不仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。

其实用matlab做曲线拟合很便捷,下面将以两个变量(y=f(x))为例详细介绍:

运行matlab软件。

在工作空间中存入变量的实验数据。具体如下:

可以直接用矩阵来存放数据,直接在命令窗口输入

x=[数据x1,数据x2,...,数据xn]

y=[数据y1,数据y2,...,数据yn]

当数据较多时,可以从excel,txt等文件中导入。

把数据存入工作空间后,在命令窗口中输入cftool,回车运行。

在这个拟合工具窗口的左边,选择变量,即分别选择x,y。

选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。

选择完后会自动完成拟合,并且给出拟合函数表达式。

下面是相应的Matlab程序

function matexpfit(x,y)

%指数曲线拟合及其图示

%x,y为已知数据点且均为行向量

%拟合曲线

A=[ones(size(x))',x']B=log(y)'X=A\B

%A\B为矩阵除法求AX=B的解

fprintf('a=%f,b=%f\n',exp(X(1)),X(2))

fprintf('拟合曲线y=%fexp(%f x)\n',exp(X(1)),X(2))

clf

x0=x(1):0.01:x(length(x))

%形如X=a:h:b是从a到b,增量为h的等间隔数

y0=X(2)*exp(X(1)*x0)

plot(x,y,'o',x0,y0,'-')%绘制以(x,y)为节点的图形

title('Exp Curve Fitting') %给图形加标题

legend('Data','Curve Fitting') %给图形加图例


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

原文地址:https://54852.com/yw/11028630.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存