簡體   English   中英

在Octave中等同於Matlab的fittype函數

[英]Equivalent in Octave to Matlab's fittype function

我有一些要在Octave中運行的matlab代碼。 有一個函數不適用於八度音程,即fittype。 我一直在谷歌上尋找在八度中等效的功能,但無濟於事。

我將發布該函數的代碼以澄清問題。

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)

這是“曲線擬合工具箱”的一部分,我懷疑您會找到等效的Octave。 但是,由於您要擬合一階多項式,因此手動編寫擬合非常簡單(您只在尋找兩個多項式系數),甚至使用polyfit函數。

我想出了以下代碼。 它並沒有給我相同的結果,但是,我仍在嘗試了解我在做什么以及輸出參數是什么。 Matlab代碼中有bn = cf_.p1行。 我假設是fitObject類的對象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。

反復試驗的方法表明,在擬合函數fit(Matlab)和polyfit(Octave)的結果向量中,cf_.1實際上是cf_(1)。 我發現的另一件事是多項式,否則我不知道是1而不是2。

謝謝大家的建議。 你讓我走上了正軌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM