Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中基于两个条件的单元阵列元素计数_Matlab_Count_Cell_Conditional Statements - Fatal编程技术网

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