2013-06-13 10 views
12

を適用し、私は行列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-平均(X)を、計算したい:オクターブ演算子 - :自動放送操作はオクターブ3.6.2で

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) 

任意のアイデアはどのように「自動放送操作は、」最初のケースに適用されることを有効にするには? 、

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

Octave referenceMatlab referenceので、後半に来て申し訳ありませ

+3

。自動ブローキャスティングを有効または無効にすることはできません。あなたは彼らが本当に同じOctaveバージョンを実行していると確信していますか?両方のマシンに同じオクターブバージョンがインストールされていても、異なるバージョンが動作している可能性があります。オクターブのプロンプトで 'OCTAVE_VERSION'の値を確認してください。 – carandraug

答えて

18

あなたは明示的にbsxfun(operation, A, B)を呼び出すことにより、放送を要求することができ、あなたのケースでそう。 同じバージョンでは、2台目のマシン設定が異なる可能性があります。 Octave Broadcasting documentation

見て、あなたが直接警告beahaviourを設定することができます非常に奇妙なようだ

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

warning ("off", "Octave:broadcast"); 
5

:(!オクターブのバージョンと同じです)

+0

素晴らしい、ありがとう.. – cgl