在矩阵中查找值并在找到时求和

时间:2012-01-29 11:20:16

标签: matlab

我有一个矩阵X(1e4,20),它带有值0:4 我有兴趣找到(逐行)值的次数〜= 0,== 1& 2& 3和== 3

为什么不呢 例如:

X=randi([0 4],1e4,20)

for ii=1:1e4
  onestwosorfours(ii,1)=sum(X(ii,:)==1|2|4)
end

工作?

我最终做了

sum(X(ii,:)==1)+sum(X(ii,:)==2), etc

2 个答案:

答案 0 :(得分:1)

这个表达式错了:

sum( X(ii,:)==1|2|4 )

您正在找到124的{​​strong>按位或,true,因为除了{{1}以外的任何内容}或false0。然后你会发现数组等于数字的次数。

相反,将其重写为:

true

或者,甚至更好

sum( X(ii,:)==1 |  X(ii,:)==2 |  X(ii,:)==4 )

这澄清了你的真正含义。

答案 1 :(得分:1)

每次对于逻辑或结果,您必须拥有A == b个部分:

X=randi([0 4],1e4,20);

for ii=1:1e4
  onestwosorfours(ii,1)=sum( X(ii,:)==1 | X(ii,:) == 2 | X(ii,:) == 4);
end