我有一些我想在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)
答案 0 :(得分:0)
这是曲线拟合工具箱的一部分,我怀疑你会发现Octave的等价物。但是,因为您正在尝试拟合一阶多项式,所以手动编写拟合非常简单(您只需要查找两个多项式系数),甚至可以使用polyfit
函数。
答案 1 :(得分:0)
我想出了以下代码。 它没有给我相同的结果,但我仍然试图了解我在做什么以及输出参数是什么。 在matlab代码中有bn = cf_.p1行。我假设是类fitzject的对象cf_的属性p1。
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在拟合函数拟合(Matlab)和polyfit(Octave)的结果向量中确实是cf_(1)。我想到的另一件事是多项式orther是1而不是2,我不知道。
感谢大家的建议。你让我走上了正确的轨道。