mdsk.net
当前位置:首页 >> MATLAB两个变量拟合,比较复杂。求大神指教 >>

MATLAB两个变量拟合,比较复杂。求大神指教

举个例子:已知z=a*(exp(y)+1)-sin(x)*b且有多组(x,y,z)的值,现在求最佳系数a,b>> f=@(a,x)a(1)*(exp(x(2,:))+1)-sin(x(1,:))*a(2);>> x=2:10;>> y=10*sin(x)./log(x);>> z=4.5*(exp(y)+1)-sin(x)*13.8;>> lsqcurvefit(f,[1 2],[x;y],z) %注意[x;y]表示多元数据,[1 2]表示f函数里的初始值a(1)=1,,a(2)=2ans = 4.499999999999999 13.800000000000024

形式复杂没关系,还是用那个拟合函数.只是涉及到无穷的,往往就不是初等函数了,搂入如果可以化简(将求和上面的无穷符号去掉)在进行拟合吧,否则应该是不可以的.

X1=[10 15 18 21 22 27 30 10 15 18 21 22 27 30 10 15 18 21 22 27 30 10 15 18 21 22 27 30]';X2=[4604 4604 4604 4604 4604 4604 4604 4000 4000 4000 4000 4000 4000 4000 3000 3000 3000 3000 3000 3000 3000 2000 2000 2000 2000

matlab 至少可以通过如下几个方法得到你的结果.使用统计工具箱1 多元线性拟合 regress函数可以直接实现,非常简单.此做法类似于对数据进行了线性最小二乘拟合,其实也就是接了超定方程.但是在实际问题中,多数都不是用线性关系可以描述的.2 自行构建函数关系式,使用非线性拟合函数nlinfit,还有诸如fittype lsqcurvefit之类的函数,但是你得自己想函数表达式.我通常采用的方式是使用人工神经网络工具箱进行处理.通过调整bp参数得到比较满意的结果.但是这种做法产生的是一个数学模型,而不是具体的函数表达式.

3; y=exp(-x/a); plot(x,y) ly=log(y); p=polyfit(x,ly,1) %拟合出来的p(1)是斜率,p(2)是截距 %理论上p(2)应当等于0 %这里的斜率与你的a有a=-1/p(1) apoly=-1/p(1)========================================================我们是没有数据的情况下,才生成数据让你看一下,怎么操作啊.你如果有数据的话,你将前三行,改成你的数据.比如你的数据x=[1,2,3,4,5,6,7];y=[7,6,5,4,3,2,1];这样子.

matlab可以做函数拟合,没问题. 如果能已知函数关系,只是待定参数的话,会很容易. 否则,就得自己猜一个函数关系,这样麻烦些;如果蒙不到正确的函数形式就很难有好效果了.

(1) help fitted function(2) 出现一堆英文(3) 忽略英文,直接看示意图和表达式,找出含有指数的那个(4) ok.按照上面的例子重复一遍就ko了.ps:matlab的本意就是希望你按照上述步骤来操作

clcy=[34 31 25 27 33 36 28 27 45 39 38 34 42 37 33 32 44 38 39 34 48 46, 41 45 47 55 43 41 45 37 43 34 47 42 48 38 37 44 33 37]';x1=[2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 , 10 10 10 10 10 10 10 10]';x2=[0.2 0.4 0.6 0.

首先,将x、y看成同一变量,即x(1)、x(2) 然后,定义自变量函数,即fun=inline('x(2)-f(x(1),x(2))','a','x') %a是拟合系数 再用Matlab的nlinfit()函数或lsqcurvefit()函数进行拟合

把代码贴上来看看,好像是plot的数据没有按X排序:假设原始数据为X,Y0,拟合结果为X,Y,其中X不是升序或降序的,形如[6, 7, 5, 8, 6.], plot(X, Y)结果大概就是图中的样子

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com