0

オクターブでの非負行列因数分解に問題があります。私は Emg データから相乗効果を推定しようとしていますが、octave では 2 つ以上の相乗効果に対してのみこれを行うことができ、1 つに対してはできません。以下のコードで問題を再現できました。nmf_bpas は、octave-forge の線形代数 pkg に含まれています。

V=rand(4, 20);
k=1; k2=2;
[W, H, Iter, HIS]=nmf_bpas(V,k);

この入力で、次のエラーが発生します。

error: vertical dimensions mismatch (4x1 vs 1x20)
error: called from
    nmf_bpas>getStopCriterion at line 373 column 19
    nmf_bpas at line 266 column 26

次のように k>1 を定義すると機能します

[W2, H2, Iter2, HIS2]=nmf_bpas(V,k2);

この入力では問題なく動作し、出力行列は W2 (4x2) と H2 (2x20) です。

同じ問題は、nnmf の他のコードで試して、入力データ Winit と Hinit を行列 (4x1) と (1x20) に指定した場合です (例:[W, H] = nmf_pg (V, Winit, Hinit, tol, timelimit) 、マキシター))

matlab では nnmf 関数で動作します。

喜んでお手伝いします

4

1 に答える 1