Оператор 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)

Любая идея, как активировать эту " операцию автоматического вещания", которая применяется в первом случае? (октавные версии одинаковы!)

Ответ 1

Вы можете явно запросить трансляцию, вызвав bsxfun(operation, A, B), поэтому в вашем случае:

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

Ссылка на Octave, Ссылка Matlab

Ответ 2

Извините, что приходите так поздно. Хотя с той же версией, вероятно, у вас будет вторая настройка машины.

Посмотрите документацию о вещании Octave, вы можете установить предупреждение beahaviour напрямую:

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

против.

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