在使用 Matlab 做 machine learning 练习时,将两个不同维度的矩阵相减,结果正确但出现了如下的警告:
1 | warning: operator -: automatic broadcasting operation applied |
出现此警告的根源在于两个矩阵的维度不一致。
但,我们知道,在Matlab中一个矩阵与一个实数进行四则运算,实际上是对矩阵的没一个矩阵元做相应的运算。那么,是否可以对此规则进行推广呢?比如,一个$M \times N$ 的矩阵 A 减去一个 $1 \times N$ 的向量 b,就相当于用 A 的每一行与 b 相减,它们之间维度一致,可以进行计算,结果也符合我们的期望。 For example,
1 | octave:3> a |
应该如何避免警告信息呢? Google 了一番之后,在 stackoverflow.com 上发现同样的问题。Matlab 内置函数 bsxfun
or repmat
可以解决这个问题。
1 | octave:5> a - repmat([1 2], 5, 1) |
bsxfun
和 repmat
的具体用法,可以查阅文档,故不在此赘述。