结果行中的警告:mx_el_eq:应用自动广播操作

时间:2015-05-27 22:18:04

标签: warnings octave

我有一个矩阵s,就像这样:

s =

   1   2   3
   4   5   2
   4   4   2

我想找到第一列为4,第二列为5的行,所以我创建了这个:

sum((s(:,1:2) == [4 5]),2) == 2

哪个工作正常并返回:

ans =

   0
   1
   0

一切都很棒,但这部分代码:s(:,1:2) == [4 5]),2)生成警告:

  

警告:mx_el_eq:应用自动广播操作

比较多列的正确方法是什么?我想在没有警告的情况下创建代码。

2 个答案:

答案 0 :(得分:4)

您收到警告的原因是自动广播是一项新功能,可能会让用户感到意外。此警告是暂时的,并已被删除(Octave 4.0.0是删除此警告的第一个版本)。

这并不意味着你做错了什么,恰恰相反。如果它对你做对了,你就找到了一个新的非常强大的功能。如果您习惯使用此功能,可以关闭警告:

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

答案 1 :(得分:3)

将bsxfun用于" eq" (等于):

s = [1 2 3; 4 5 2; 4 4 2]
all (bsxfun (@eq, s(:,1:2), [4 5]), 2)
ans =

   0
   1
   0