# Count elements of a cell array based on two conditions

41 ビュー (過去 30 日間)
Maria 2014 年 7 月 27 日

I have the following cell array:
A={'x' 2000 [] 2001 []
26 61 21 157 104
41 98 18 76 60
125 20 33 20 33
143 157 104 157 104
172 61 21 61 21
177 559 10 559 13}
I would like to count only the cases in which A(:,3)<25 and A(:,5)>25, so I would get as output:
Output={2}
I tried this:
sum(cell2mat(A(:,3))<25 & cell2mat(A(:,5))>25)
but to use '&' inputs must have the same size.
Can someone help me? Thank you.
##### 2 件のコメント表示非表示 1 件の古いコメント
Maria 2014 年 7 月 27 日
Yes

サインインしてコメントする。

### 採用された回答

Azzi Abdelmalek 2014 年 7 月 28 日
out=nnz(cellfun(@(x,y) all([x<25,y>25]),A(2:end,3),A(2:end,5)))

サインインしてコメントする。

### その他の回答 (2 件)

Geoff Hayes 2014 年 7 月 27 日
Maria - you can try the following
length(find(cell2mat(A(:,3))<25 & cell2mat(A(:,5))>25))
We convert the third and fifth columns of A to vectors using cell2mat and then find which indices from both vectors satisfy the two conditions. length is then used to do the the count.
##### 2 件のコメント表示非表示 1 件の古いコメント
Geoff Hayes 2014 年 7 月 27 日
Given this error, it would seem as if the two columns, cellmat(A(:,3)) and cellmat(A(:,5)) are of different dimension. Are both these columns just like in the above matrix?
A(:,3) =
[]
[ 21]
[ 18]
[ 33]

[ 21]
[ 10]
A(:,5) =
[]

[ 60]
[ 33]

[ 21]
[ 13]
During the cell2mat conversion, the empty elements are removed. I wonder if perhaps your two columns have a different number of empty elements, [], so that after the conversion, the two columns are of a different dimension.

サインインしてコメントする。

Image Analyst 2014 年 7 月 27 日
Another option to count rows meeting the criteria:
theCount = sum(cell2mat(A(:,3)) < 25 & cell2mat(A(:,5)) > 25)
##### 3 件のコメント表示非表示 2 件の古いコメント
Image Analyst 2014 年 7 月 27 日
Here's the exact code I used and it works fine:
A = {'x' 2000 [] 2001 []
26 61 21 157 104
41 98 18 76 60
125 20 33 20 33
143 157 104 157 104
172 61 21 61 21
177 559 10 559 13}
theCount = sum(cell2mat(A(:,3)) < 25 & cell2mat(A(:,5)) > 25)
Post your adaptation of my code so I can see what you changed and see how you broke it.

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!