matlab非线性拟合问题已知f=J*Ld/Li(1-exp(-Ld/Li)),Ld=t*(Voc-x)在函数中 J=21.18、Li=1*e-6、Voc=0.418.f和X可以给定一系列值如下:x f51.885 -21.482386.4 -21.0836134.73 -20.98485157.74 -20.90685240.6 -20.30025321.15 -19.5
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 10:51:23
matlab非线性拟合问题已知f=J*Ld/Li(1-exp(-Ld/Li)),Ld=t*(Voc-x)在函数中 J=21.18、Li=1*e-6、Voc=0.418.f和X可以给定一系列值如下:x f51.885 -21.482386.4 -21.0836134.73 -20.98485157.74 -20.90685240.6 -20.30025321.15 -19.5
matlab非线性拟合问题
已知f=J*Ld/Li(1-exp(-Ld/Li)),Ld=t*(Voc-x)在函数中 J=21.18、Li=1*e-6、Voc=0.418.f和X可以给定一系列值如下:
x f
51.885 -21.4823
86.4 -21.0836
134.73 -20.98485
157.74 -20.90685
240.6 -20.30025
321.15 -19.5936
374.05 -16.960725
通过拟合求t
希望给出程序代码及标注!
matlab非线性拟合问题已知f=J*Ld/Li(1-exp(-Ld/Li)),Ld=t*(Voc-x)在函数中 J=21.18、Li=1*e-6、Voc=0.418.f和X可以给定一系列值如下:x f51.885 -21.482386.4 -21.0836134.73 -20.98485157.74 -20.90685240.6 -20.30025321.15 -19.5
要新建两个文件:
主文件,test.m
------------------------------------------------------------------------------
function test
clear
clc
x = [51.885; 86.4; 134.73; 157.74; 240.6; 321.15; 374.05];
f = [-21.4823; -21.0836; -20.98485; -20.90685; -20.30025; -19.5936; -16.960725];
ft = fittype( 'fit_func( x,t )' );
cfun = fit( x,f,ft,'StartPoint',-0.01 ); % 开始拟合
cfun % 输出拟合参数等
plot( cfun,x,f ) % 画出拟合后曲线和原始数据点
end
函数文件,用于自定义的函数:fit_func.m
------------------------------------------------------------------------------
function f = fit_func( x,t )
J = 21.18;
Li = 1e-6;
Voc = 0.418;
Ld = t * ( Voc - x );
f = J*Ld ./ ( Li*(1-exp(-Ld/Li)) );
end
------------------------------------------------------------------------------
可以保证运行输出结果,运行后自动绘出曲线和原始数据点,但是结果可能不会令人满意.我不保证编码时完全正确,但基本思想就是这样.你需要仔细检查代码,试着调正fit函数中StartPoint,还有其他选项(参见文档中fitoptions的说明),直到曲线和数据点吻合到满意为止.当然也可能是该函数不是这批数据点的理想模型,换成别的会更好.