结果行中的警告:mx_el_eq:已应用自动广播操作
Warning in findings rows: mx_el_eq: automatic broadcasting operation applied
我有一个矩阵,s
,像这样:
s =
1 2 3
4 5 2
4 4 2
我想找到第一列为 4,第二列为 5 的行,所以我创建了这个:
sum((s(:,1:2) == [4 5]),2) == 2
效果很好 return:
ans =
0
1
0
一切都很好,但是这部分代码:s(:,1:2) == [4 5]),2)
生成警告:
warning: mx_el_eq: automatic broadcasting operation applied
比较多列的正确方法是什么?我想创建没有警告的代码。
将 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
您收到警告的原因是自动广播是一项新功能,可能会让用户措手不及。此警告是暂时的,已被删除(Octave 4.0.0 是第一个删除此警告的版本)。
这并不真的意味着你做错了什么,恰恰相反。如果它适合您,那么您就发现了一个非常强大的新功能。如果您习惯使用此功能,可以关闭警告:
warning ("off", "Octave:broadcast")
我有一个矩阵,s
,像这样:
s =
1 2 3
4 5 2
4 4 2
我想找到第一列为 4,第二列为 5 的行,所以我创建了这个:
sum((s(:,1:2) == [4 5]),2) == 2
效果很好 return:
ans =
0
1
0
一切都很好,但是这部分代码:s(:,1:2) == [4 5]),2)
生成警告:
warning: mx_el_eq: automatic broadcasting operation applied
比较多列的正确方法是什么?我想创建没有警告的代码。
将 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
您收到警告的原因是自动广播是一项新功能,可能会让用户措手不及。此警告是暂时的,已被删除(Octave 4.0.0 是第一个删除此警告的版本)。
这并不真的意味着你做错了什么,恰恰相反。如果它适合您,那么您就发现了一个非常强大的新功能。如果您习惯使用此功能,可以关闭警告:
warning ("off", "Octave:broadcast")