【问题标题】:Octave operator -: automatic broadcasting operation appliedOctave operator -: 应用自动广播操作
【发布时间】:2013-06-10 07:00:48
【问题描述】:

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

知道如何激活在第一种情况下应用的“自动广播操作”吗? (八度音阶相同!)

【问题讨论】:

  • 这看起来很奇怪。您无法激活或停用自动广播。你确定他们真的在运行相同的 Octave 版本吗?请注意,您可能在两台机器上安装了相同的 Octave 版本,但运行的版本不同。在 octave 提示符处检查 OCTAVE_VERSION 的值。

标签: ubuntu matrix operators octave


【解决方案1】:

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

Octave Broadcasting documentation,可以直接设置警告行为:

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

对比

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

【讨论】:

    【解决方案2】:

    您可以通过调用bsxfun(operation, A, B) 来明确请求广播,因此在您的情况下:

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

    Octave reference, Matlab reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-05-14
      • 1970-01-01
      相关资源
      最近更新 更多