2012-07-25 75 views
3

我有一个问题,然后我需要你的帮助来解决它。识别矩阵中的值

我有一个矩阵A

A = [ 0 0 1 2 3 4 0; 
     1 2 3 4 0 0 0; 
     0 0 0 1 2 3 4; 
     0 1 2 3 4 0 0] 

,然后我想知道有多少数量的矩阵A中的每个行是不与各值的相同列的每个值“1”的“> =在矩阵A

3" 各行的,所以我认为我的答案之前

Ans = 2 

谢谢希望。

+1

所以你要找到所有在它有1列,但不大于2的值? – Perchik 2012-07-25 15:52:28

回答

3

试试这个:

>> num = sum(any(A(:,all(A<3))==1,2)) 
num = 
    2 

首先,我们发现不包含值大于或等于3 idx = all(A<3)列索引。

接下来在这些列A(:,idx)中,我们发现包含任何1:any(A(:,idx)==1,2)的行。

最后,我们指望有多少这样的行被发现sum(.)

+0

你是对的,虽然我在你的7分钟之前没有看到我的回答有什么改善或显着差异! – jmetz 2012-07-25 16:24:15

+0

同意 - 我为此道歉,当我认为它是错误的时候,我低估了它,显然我的downvote被锁定,除非答案被编辑。 – jmetz 2012-07-25 16:33:50

+0

谢谢youuu先生@mutzmatron ... :) – 2012-07-26 04:32:21

0

您可以使用类似

sum((sum(A == 1 ,1) > 0) & ~(sum(A >= 3,1) > 0)) 
+0

@Perchik - 我认为这就是他的意思,虽然它有点令人困惑 - 谢谢你确认这就是你的想法! – jmetz 2012-07-25 16:00:49