如何计算特定行中的元素数量?

时间:2012-08-19 03:36:36

标签: matlab

  

可能重复:
  Count number of values in matrix within given range

我有以下矩阵

A=[ 1 2 3 4 5 6 7;
    3 4 5 6 8 9 1;
    3 4 2 5 6 7 8]

如何找出第一行中有多少元素,其值在>2 & <6范围内?

2 个答案:

答案 0 :(得分:0)

如果我理解帐户的含义,如果您想要符合条件的find元素:

B = A(1,:)
find(B > 2 & B < 6)

或一行:

find(A(1,:) > 2 & A(1,:) < 6)

您还必须知道find为您提供了 indices ,而不是满足给定逻辑表达式的数组的实际元素。

答案 1 :(得分:0)

您需要使用矢量化计算来考虑矩阵。 (在这里使用find不是一个好的解决方案,因为它没有矢量化以在行上独立运行。)

首先,如果您尝试测试会发生什么,A&gt; 2,在MATLAB中?试试吧!

A=[ 1 2 3 4 5 6 7;
    3 4 5 6 8 9 1;
    3 4 2 5 6 7 8];

>> A > 2
ans =
     0     0     1     1     1     1     1
     1     1     1     1     1     1     0
     1     1     0     1     1     1     1

MATLAB生成一个逻辑数组,如果A的元素大于2,则为true。类似地,如果我们键入A&lt; 6,我们得到另一个逻辑数组。

>> A < 6
ans =
     1     1     1     1     1     0     0
     1     1     1     0     0     0     1
     1     1     1     1     0     0     0

如果我们将两个op组合成一个表达式怎么办?

>> (A > 2) & (A < 6)
ans =
     0     0     1     1     1     0     0
     1     1     1     0     0     0     0
     1     1     0     1     0     0     0

好的,所以这个数组告诉我们两个子表达式都是真的。请注意,我们可以使用sum和其他算术运算来操作逻辑数组。

>> sum((A > 2) & (A < 6),2)
ans =
     3
     3
     3

因此,上面的表达式计算满足每行目标的元素数量,并且速度非常快。学会使用MATLAB,因为它应该被使用。你的代码会变得更好。