12

在 octave 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

抱歉这么晚才进来。尽管使用相同的版本,但您的第二台机器设置可能会有所不同。

查看Octave Broadcasting 文档,可以直接设置警告行为:

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

对比

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