【问题标题】:Fit with the parameter适合参数
【发布时间】:2016-09-15 20:11:32
【问题描述】:

我对 Matlab 很陌生,我正在尝试使用我在网上找到的这段代码。 我正在尝试拟合 HydrodynamicSpectrum 描述的图表。但不是在输入 fvA 和 fmA 后让它适合,我也试图获得这个值的拟合参数。

我试过删除它们,改变它们。但没有一个工作。我想知道这里是否有人能够指出我解决这个问题的正确方向。

specFunc = @(f, para)HydrodynamicSpectrum(f, [para fvA fmA]);
[fit.AXfc, fit.AXD] = NonLinearFit(fit.f(indXY), fit.AXSpec(indXY), specFunc, [iguess_AXfc iguess_AXD]);
[fit.AYfc, fit.AYD] = NonLinearFit(fit.f(indXY), fit.AYSpec(indXY), specFunc, [iguess_AYfc iguess_AYD]);
[fit.ASumfc, fit.ASumD] = NonLinearFit(fit.f(indSum), fit.ASumSpec(indSum), specFunc, [iguess_ASumfc iguess_ASumD]);
predictedAX = HydrodynamicSpectrum(fit.f, [fit.AXfc fit.AXD fvA fmA]);
predictedAY = HydrodynamicSpectrum(fit.f, [fit.AYfc fit.AYD fvA fmA]);
predictedASum = HydrodynamicSpectrum(fit.f, [fit.ASumfc fit.ASumD fvA fmA]);

function spec = HydrodynamicSpectrum(f, para);

fc = para(1);
D = para(2);
fv = para(3);
fm = para(4);
f = abs(f);  %Kludge!
spec = D/pi^2*(1+sqrt(f/fv))./((fc - f.*sqrt(f./fv) - (f.^2)/fm).^2 + (f + f.*sqrt(f./fv)).^2);


function [fc, D, sfc, sD] = NonLinearFit(f, spec, specFunc, init);

func = @(para, f)spec./specFunc(f, para);

[paraFit, resid, J] = nlinfit(f, ones(1, length(spec)), func, init);

fc = paraFit(1);
D = paraFit(2);

ci = nlparci(real(paraFit), real(resid), real(J));  % Kludge!!

sfc = (ci(1,2) - ci(1,1))/4;
sD = (ci(2,2) - ci(2,1))/4;

【问题讨论】:

    标签: matlab non-linear-regression


    【解决方案1】:
    [paraFit, resid, J] = nlinfit(f, ones(1, length(spec)), func, init);
    

    看起来您使用此行获得了拟合参数。您正在进一步处理它们以从函数中获取其他内容。您也可以修改第二个函数以将它们取出。

    由于 cmets 很少,而且问题似乎是特定于应用程序的,因此对于您所提供的内容,我无法提供太多帮助。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 2017-09-21
      • 2015-09-06
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多