Matlab中基于两个条件的单元阵列元素计数
我有以下单元格数组:Matlab中基于两个条件的单元阵列元素计数,matlab,count,cell,conditional-statements,Matlab,Count,Cell,Conditional Statements,我有以下单元格数组: 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} 我只想计算A(:,3)25所在的行,因此我将得到以下输出: Output={2} 我试过这个: sum(cell2mat(A(:,3))<25 &a
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}
我只想计算A(:,3)25
所在的行,因此我将得到以下输出:
Output={2}
我试过这个:
sum(cell2mat(A(:,3))<25 & cell2mat(A(:,5))>25)
sum(cell2mat(A(:,3))25)
但是要使用
&
输入必须具有相同的大小。您的语法是正确的。我不明白你为什么会出错。让我们将陈述的每一部分分解为单独的陈述:
b1 = cell2mat(A(:,3)) < 25
b1 =
1
1
0
0
1
1
b2 = cell2mat(A(:,5)) > 25
b2 =
1
1
1
1
0
0
c = b1 & b2
c =
1
1
0
0
0
0
a = sum(c)
a = 2
在任何情况下,如果要获取上述条件满足的有效行,请使用find
然后偏移1
跳过第一行,因为我们希望忽略原始单元格数组中两列的标题。换言之:
ind = find(cell2mat(A(2:end,3)) < 25 & cell2mat(A(2:end,5)) > 25) + 1
ind =
2
3
ind=find(cell2mat(A(2:end,3))<25&cell2mat(A(2:end,5))>25)+1
ind=
2.
3.
您的语法是正确的。见下面我的帖子。因为对第三列和第五列使用cell2mat
进行转换会产生相同的大小,所以不应该出现大小不一致的错误。顺便说一句,您可以将cell2mat(A(:,3))<25
替换为[A{,3}]
@Dan Nice。我没有看到,但我想让OP知道他/她的代码没有问题
ind = find(cell2mat(A(2:end,3)) < 25 & cell2mat(A(2:end,5)) > 25) + 1
ind =
2
3