2012-01-29 46 views
2

我有一個矩陣X(1e4,20),其值爲0:4
我感興趣的發現(逐行)倍的值的數目是〜= 0,== 1 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 

回答

1

這種表達是錯誤的:

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

您正在尋找按位或124這是true,因爲其他任何比false0true。然後你會發現數組等於數字的次數。

相反,把它改寫爲:

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

,或者甚至更好

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

這闡明你的真正用意。

+0

謝謝你的澄清。 – HCAI 2012-02-01 08:59:08

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