【问题标题】:Equivalent in Octave to Matlab's fittype function在 Octave 中等效于 Matlab 的 fittype 函数
【发布时间】:2014-04-24 06:11:14
【问题描述】:

我有一些要在 Octave 中运行的 matlab 代码。有一个函数不适用于 octave,它是 fittype。我一直在用谷歌搜索 Octave 中的等效功能,但无济于事。

我将发布该函数的代码以澄清问题。

function bn = createFit2(b8,bi)

% --- Plot data that was originally in data set "bi vs. b8"
b8 = b8(:);
bi = bi(:);

% --- Create fit "fit"
ok_ = isfinite(b8) & isfinite(bi);
if ~all( ok_ )
warning( 'GenerateMFile:IgnoringNansAndInfs',...
    'Ignoring NaNs and Infs in data.' );
end
ft_ = fittype('poly1');

% Fit this model using new data
cf_ = fit(b8(ok_),bi(ok_),ft_);

bn = cf_.p1;

% disp(cf_.p1)

【问题讨论】:

  • 告诉我们您想要达到的目标。您可能对polyfitpolyval 等感兴趣。
  • 正如我在 cmets 对 am304 的回答中所说,我唯一的目标是将 MatLab 脚本(实际上是 2)转换为 Octave 并使其工作完全相同,或产生相同的结果,以便说服员工远离昂贵的 Matlab 并有一个可行的替代方案。
  • 我正在尝试使用看起来运行良好的 polyfit,但我不确定如何匹配我在代码中拥有的 MAtlab fitobject cf_ 的属性。我发现 polyfit 产生一个维度为 3 的向量。不确定第一个组件是否与我在 matlab 代码中的 p1 属性匹配 (bn = cf_.p1)

标签: matlab octave curve-fitting


【解决方案1】:

这是 Curve Fitting Toolbox 的一部分,我怀疑你会找到 Octave 的等价物。但是,由于您要拟合一阶多项式,因此手动编写拟合相当简单(您只需要查找两个多项式系数),甚至可以使用 polyfit 函数。

【讨论】:

  • 谢谢 am304,我会尝试让 polyfit 来解决问题。我不是很擅长装修,但有一些背景。由于此翻译的目的只是试图说服我的老板从 MatLab 迁移,因此我必须使此功能正常工作。该公司询问了大学部门。为了解决遥感问题,他们想出的一些东西就是这个功能。如果我可以让它在 Octave 中工作,我的机会将会增加很多。我会及时通知你
【解决方案2】:

我想出了以下代码。 它没有给我相同的结果,但我仍在尝试了解我在做什么以及输出参数是什么。 matlab 代码中有 bn=cf_.p1 行。我假设是对象 cf_ 的属性 p1,属于 fitobject 类。

function bn = createFit2(b8,bi)
% --- Plot data that was originally in data set "bi vs. b8"
b8 = b8(:);
bi = bi(:);
% --- Create fit "fit"
ok_ = isfinite(b8) & isfinite(bi);
if ~all( ok_ )
    warning( 'GenerateMFile:IgnoringNansAndInfs',...
        'Ignoring NaNs and Infs in data.' );
end
ft_ = 1 %orden del polinomio
% Fit this model using new data
cf_ = polyfit(b8(ok_),bi(ok_),ft_);
bn = cf_(1);
cf_ %muestra el valor de cf cada vez que ejecuta la función
% disp(cf_.p1)

我现在的研究是确定哪个八度音程输出与 cf_ MatLab fitobject 中的 p1 等效。

试错法向我展示了 cf_.1 在拟合函数 fit (Matlab) 和 polyfit(Octave) 的结果向量中确实是 cf_(1)。我发现的另一件事是多项式 orther 是 1 而不是 2,这是我不知道的。

感谢大家的建议。你让我走上正轨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多