您的位置:首页 > 编程语言 > MATLAB

MATLAB利用全局优化曲线拟合长沙铁路段曹辉

2016-12-27 17:31 489 查看
最近在处理多b值MRI曲线拟合的数据,每组的数据结构如下

b:[0 20 50 80 100 150 200 400 600 800 1000];

S:[297 283.8 265.2 257.2 256.1 225.8 215.2 169.9 138.5 109.8 101.5];

DWI-MRI成像中b值和信号强度的比值关系如下:

单指数模型:S(b)/S(0) = exp(-b*ADC);

双指数模型:

拉伸指数:

DKI

……….

有了b值和S值,怎么拟合得到这些参数呢?利用MATLAB的曲线拟合工具箱可以很好的解决这些问题;



举个例子DKI拟合,对应的长沙铁路段曹辉Matlab函数

ft = fittype( 'exp(-a*x+x^2*a^2*b/6)', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( ft );
opts.Algorithm = 'Levenberg-Marquardt';
opts.Display = 'Off';
opts.Lower = [-Inf -Inf];
opts.StartPoint = DKI_start;
opts.Upper = [Inf Inf];
[fitresult, gof] = fit( xData, yData, ft, opts );


[fitresult, gof]存储拟合的结果参数!但是曲线拟合工具箱对参数的初始值非常敏感,有没有一种拟合方法可以全局搜索出全局最优值?

http://cn.mathworks.com/help/gads/globaloptimsolution-class.html

其实题主也在试探性的研究这个问题,根据网上搜索的资料,初步可以认定Matlab最优化工具箱具有解决这个问题的潜在可能:

Matlab中有两个全局最长沙铁路段曹辉优化函数:MultistartGlobalSearch

fun = @(a,x) exp(-a*x);
problem = createOptimProblem('lsqcurvefit','objective', fun,'xdata',xdata,'ydata',ydata, 'x0',0.001);
ms = MultiStart;
% ms = GlobalSearch;
[a,fval,exitflag,output,solutions] = run(ms, problem,50);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 优化 曲线拟合