伙计们,我有以下两个矩阵。我想将第一矩阵的第二列与第二矩阵的第一列进行比较。如果它们相同,我想将该行复制到另一个矩阵。我在下面举了一个例子。非常感谢。
Matrix 1 Matrix 2
3323 918 918 2 12 13
2522 842 918 2 9 13
3049 918 918 2 6 13
1143 40 918 2 3 1
204 1 842 2 3 8
1663 362 842 3 12 9
2079 362 842 3 9 3
770 1 40 3 9 6
2189 842 40 3 6 9
40 3 3 5
Expected Result
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
842 2 3 8
842 3 12 9
842 3 9 3
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
40 3 9 6
40 3 6 9
40 3 3 5
842 2 3 8
842 3 12 9
842 3 9 3
答案 0 :(得分:0)
由于生成result_Matrix(称为RM
)的方法有点描述性,因此该方法也会有些复杂。首先,您必须分析Marix 2(我将其称为M2
)。您可以使用简单的循环:
i=1;
M2_indexes=[1];
for idx=1:size(M2)
if M2(idx)~=M2(M2_indexes(i))
M2_indexes=[M2_indexes, idx];
i=i+1;
end
end
M2_indexes=[M2_indexes,(size(M2,1)+1)];
现在您的程序知道值在[1 5 8]
处变化,并且矩阵范围内的最后一个索引为[11]
。现在是迭代遍历M1
的时候了。这与上一步非常相似:
MR = [];
for idx=1:size(M1)
for idy=1:size(M2_indexes,2)
if M2(M2_indexes(idy))==M1(idx,2)
MR=[MR; M2(M2_indexes(idy):(M2_indexes(idy+1)-1),1:4)];
end
end
end
结果如您所描述:
MR =
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
842 2 3 8
842 3 12 9
842 3 9 3
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
40 3 9 6
40 3 6 9
40 3 3 5
842 2 3 8
842 3 12 9
842 3 9 3