我在这里有一些矩阵:
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)。
什么代码可以像那些人一样回答?请帮助我,谢谢你。
答案 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