在單元陣列中的特定單詞假設我們有這樣的電池陣列:計數細胞與MATLAB
X = {'Good' 'Bad' 'Good';
'Bad' 'Good' 'Bad';
'Bad' 'Bad' 'Bad';
'Good' 'Bad' 'Good';
'Good' 'Good' 'Good'};
我怎麼能指望每一行中的Good
和Bad
出現?
謝謝。
在單元陣列中的特定單詞假設我們有這樣的電池陣列:計數細胞與MATLAB
X = {'Good' 'Bad' 'Good';
'Bad' 'Good' 'Bad';
'Bad' 'Bad' 'Bad';
'Good' 'Bad' 'Good';
'Good' 'Good' 'Good'};
我怎麼能指望每一行中的Good
和Bad
出現?
謝謝。
假設你有這樣的輸入單元陣列,每行{'Good'}
細胞計數快速溶液中的元素或每行的細胞的相等數目 -
count = sum(strcmp(X,{'Good'}),2)
使用用於{'Bad'}
相同的規則。
如果strcmp
拖累你慢,你可以使用char
用,而不是我個人最喜歡bsxfun
。
對於{'Good'}
-
Xchar = char(X{:})
count = sum(reshape(all(bsxfun(@eq,Xchar(:,1:numel('Good')),'Good'),2),size(X)),2)
對於{'Bad'}
-
count = sum(reshape(all(bsxfun(@eq,Xchar(:,1:numel('Bad')),'Bad'),2),size(X)),2)
在一般情況下,你需要計算'N-1 '次,其中'n'是列表中唯一字的數量。在這個例子中,「Bad」的出現只是一行中元素的總數 - 「Good」的出現次數。 – Oleg 2014-10-06 18:14:55
@OlegKomarov對於給定的輸入,這是正確的,但由於沒有提到這兩個詞是這裏唯一的詞,所以保持解決方案更通用一些是有意義的。欣賞那裏的觀察! – Divakar 2014-10-06 18:17:54