已知方程如何用MATLAB进行非线性拟合求模型参数
发布网友
发布时间:2022-05-24 19:58
我来回答
共2个回答
热心网友
时间:2023-10-29 10:37
你最好使用曲线拟合工具箱,这个很简单的。
如果你的函数比较特别,在曲线拟合工具箱里没有,那么你就需要自己编程进行拟合了,可以使用lsqnonlin函数来做这个拟合,它是一个非线性拟合函数
下面给你一个例子
首先定义自己要拟合的函数的形式,其中a是函数中的系数,x和y是已知的数据
function E=fun(a,x,y)
x=x(:);
y=y(:);
Y=a(1)*x.^0.5 + a(2)*x;
E=y-Y;
下面的程序是调用上面的函数进行拟合
x = [2;4;6;7]'
y = [2;6;4;8]'
a0=[1 1];
options=optimset('lsqnonlin');
a=lsqnonlin(@fun,a0,[],[],options,x,y)
祝你学习愉快!
热心网友
时间:2023-10-29 10:37
下面是相应的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') %给图形加图例
下面用MATLAB软件运行程序可得结果如下图:
产生的图形如下
matlab中已知x,y数据,如何非线性拟合得到方程y=a/(1+(a/60.2-1)*exp...
先输入x和y的数据。然后在matlab的工作栏输入cftool.在弹出来的拟合工具箱内选择变量为你的x和y.然后右边的拟合方法选择custom equation,然后输入你要拟合的式子的形式,按fit就可以拟合了。
如何用matlab进行已知函数的非线性拟合
首先将y和x1,x2,x3都变为列向量,就是80x1的矩阵 如果原来是行向量1x80的矩阵用y=y.'或x1=x1.‘转置一下就可以了 将x1 x2 x3合拼为80x3的矩阵 x=[x1 x2 x3];然后创建函数句柄 fun=@(a,x) a(1)*x(:,1)+a(2)*x(:,2)+(a(3)*x(:,1)+a(4)*x(:,1)).*(1+exp...
怎么利用MATLAB软件进行非线性曲线模型的模拟?比如Richards曲线的模拟...
由于Richards曲线方程是非线性函数,所以应用lsqcurvefit()函数来拟合。拟合步骤如下:t=[07142128];y=[0.2480 0.7677 1.4190 1.5782 1.6712];func=inline('a(1)./(1+a(2).*exp(-a(3).*t).^a(4))','a','t');b=[0.95717 0.48538 0.80028 0.14189];a=lsqcurvefit...
MATLAB的lsqcurvefit函数拟合非线性式子中的未知参数
在实际问题中,经常遇到包含exp(x)、lnx、sinx等函数组合的复杂非线性经验公式。针对这类问题,我们可以利用MATLAB中的lsqcurvefit函数进行求解。该函数采用非线性最小二乘法,其损失函数与优化算法类似,通过给定参数的初始值,不断优化参数以达到最佳拟合效果。以下为非线性最小二乘模型的目标函数示例。lsqc...
如何用matlab实现非线性最小二乘拟合
当知道某两个量之间的函数形式,却不知道它的具体参数时,可以使用最小二乘法来拟合该参数。而matlab可以很容易的实现这一点。先看一个具体的例子,最后来说明该命令在matlab中的具体用法。例子如下图所示,已知y与x之间是满足指数关系的,但不知道具体的参数,用已知的数据估计这些参数值。首先启动...
matlab 已知x、y值以及函数,求未知参数
matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)已知数据点:xdata=(xdata1,xdata2,…,xdatan)ydata=(ydata1,ydata2,…,ydatan)lsqcurvefit用以求含参量x(向量)的向量值函数 F(x,xdata)=(F(x,...
如何用matlab对四维数据进行非线性拟合
如你有数据和数据模型函数y=f(x1,x2,x3),可以用lsqcurvefit()或nlinfit()等拟合函数来求解其模型函数的系数。实现方法如下:x1=[。。。]x2=[。。。]x3=[。。。]x=[x1 x2 x3]y=[。。。]func=@(a,x)数据模型函数表达式,如y=a1x1^2+a2x2^2+a3x3^2+a4 b=[。。。] %...
怎么用matlab进行非线性的多元函数拟合?
方法一:1、最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。2、以二次多项式拟合为例,输入p=polyfit(x,y,2),如果想拟合更高次的多项式,更换括号内数字即可。通过计算获得的p,是一个数组,对应了多项式的各项系数,以图中为例,拟合出的多项式为:y=0.9962x2+0.0053...
matlab 非线性拟合求参数
需要用到非线性拟合函数,按你这个式子我试了下好像拟合不出结果,所以我把你的式子简化了一下,前面那一部分(35.72A/4333.3(B-A))其实也可以看做一个参数,就叫做C吧,自己建立一个m文件,我起名为shiyan1.m function shiyan1xdata = [0.25,0.5,0.75,1,1.5,2,2.5,3,3.5,4,4....
怎样用MATLAB拟合两个自变量的函数系数和指数
利用已知数据进行非线性拟合,根据经验给abc一个初始值1, 1, 1,初始值不一定非要很准确p = lsqcurvefit( @subfun, [ 1, 1, 1 ], [ x1', x2' ], y' );disp( '拟合参数结果如下:' )disp( [ 'a = ', num2str( p( 1 ) ), ', b = ', num2str( p( 2 ) ), ... ...