オクターブでの非負行列因数分解に問題があります。私は 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 関数で動作します。
喜んでお手伝いします