12

オクターブ 3.6.2 では、行列がX=[1 2 3; 2 4 5; 2 6 5; 2 3 7; 3 6 8; 2 4 6; 3 6 8; 4 7 10]あり、X-mean(X) を計算したいので、次のようになります。

octave:2> X-mean(X)
warning: operator -: automatic broadcasting operation applied
ans =

  -1.37500  -2.75000  -3.50000
  -0.37500  -0.75000  -1.50000
  -0.37500   1.25000  -1.50000
  -0.37500  -1.75000   0.50000
   0.62500   1.25000   1.50000
  -0.37500  -0.75000  -0.50000
   0.62500   1.25000   1.50000
   1.62500   2.25000   3.50000

ただし、別のマシンで同じコマンドを試すと、行列のサイズが一致しないというエラーが表示されます。

error: operator -: nonconformant arguments (op1 is 7x3, op2 is 1x3)

最初のケースで適用される「自動ブロードキャスト操作」を有効にする方法はありますか? (オクターブバージョンは同じです!)

4

2 に答える 2

19

を呼び出してブロードキャストを明示的にリクエストできbsxfun(operation, A, B)ます。したがって、あなたの場合は次のようになります。

bsxfun(@minus, X, mean(X))

Octave リファレンス, Matlab リファレンス

于 2013-06-18T16:46:16.520 に答える
6

遅くなってごめんなさい。同じバージョンでも、2 台目のマシンのセットアップが異なる可能性があります。

Octave Broadcasting documentationを見てください。警告動作を直接設定できます。

warning ("error", "Octave:broadcast");

対。

warning ("off", "Octave:broadcast");
于 2014-07-14T10:54:12.403 に答える