1

我这里有一些矩阵:

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

我将上面的矩阵称为“初始矩阵”。然后我在这里有“矩阵D”:

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

其中我必须确定矩阵 D 中每一行中有多少值“1”,这与矩阵 A、B、C 中每一行中值“>3”的列不同,矩阵 A、B、C 中的每一行已重新排列,如下例所示。

1 2 3 4 0 0 0
0 0 1 2 3 4 0
    0 1 2 3 4 0 0 
    0 0 0 1 2 3 4
        1 2 3 4 0 0 0
        0 1 2 3 4 0 0 

            1 2 3 4 0 0 0
            1 2 3 4 0 0 0

我希望我的答案是 0,因为矩阵 D 中第一行和第二行的值 1 是同一列,同一列中的某个值中的一个值为 1,其值 > 3 (4)。

像这样的人回答的代码是什么?请帮助我,谢谢。

4

1 回答 1

0

让我从一个简单的解决方案开始。请确认这是否是预期的行为:

首先,我们排列矩阵 A、B、C、D,如您所示:

A = [ 1 2 3 4 0 0 0;
      0 0 1 2 3 4 0];
B = [ 0 1 2 3 4 0 0;
      0 0 0 1 2 3 4];
C = [ 1 2 3 4 0 0 0;
      0 1 2 3 4 0 0];
D = [ 1 2 3 4 0 0 0;
      1 2 3 4 0 0 0];

X = zeros(8,13);
X(1:2,1:7) = A;
X(3:4,3:9) = B;
X(5:6,5:11) = C;
X(7:8,7:13) = D;

这给了我们:

X =
     1     2     3     4     0     0     0     0     0     0     0     0     0
     0     0     1     2     3     4     0     0     0     0     0     0     0
     0     0     0     1     2     3     4     0     0     0     0     0     0
     0     0     0     0     0     1     2     3     4     0     0     0     0
     0     0     0     0     1     2     3     4     0     0     0     0     0
     0     0     0     0     0     1     2     3     4     0     0     0     0
     0     0     0     0     0     0     1     2     3     4     0     0     0
     0     0     0     0     0     0     1     2     3     4     0     0     0

现在我们可以重复使用您上一个问题的答案来进行计数:

numPerRow = sum(X(7:8,all(X(1:6,:)<4))==1,2)
num = sum(numPerRow)

矩阵的两行都D为零,因此总和也为零:

numPerRow =
     0
     0

num =
     0
于 2012-07-29T21:38:09.873 回答