如何通过考虑其他矩阵来识别矩阵的价值

时间:2012-07-28 05:51:57

标签: matlab matrix

我在这里有一些矩阵:

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”的列不是同一列,它已经重新排列为以下示例。

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)。

什么代码可以像那些人一样回答?请帮助我,谢谢你。

1 个答案:

答案 0 :(得分: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

现在我们可以重新使用您previous question的答案来计算:

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

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

numPerRow =
     0
     0

num =
     0