总体思路 有一个MxN矩阵,必须将行从该矩阵复制到另一个矩阵,时间为2行>
示例>
matrix =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
然后将内容复制到另一个矩阵
for k=1:size(matrix,1)
eval(['V' '=matrix(k,:)'])
end
但是如何使用排列而不是重复方法同时复制2行呢?这个想法是生成一个时间矩阵,在其中应用从第一行和第二行开始直到最后一个行的某些条件,具体取决于用户提供的矩阵的大小(因此并不总是相同的大小)。对于提取的第一个矩阵,将是:
NewMatrix= [V1; V2]
condition
end
问题 以这种方式应该迭代/构造(我想是吗?)NewMatrix元素;用手将是:
NewMatrix= [V1; V2]
NewMatrix= [V1; V3]
NewMatrix= [V1; V4]
NewMatrix= [V1; V5]
完成后,将保留下一个排列
NewMatrix= [V2; V1]
NewMatrix= [V2; V3]
NewMatrix= [V2; V4]
NewMatrix= [V2; V5]
,依此类推...但是如何将其推广到MxN矩阵?为了避免每次用户提供不同大小的矩阵时都要调整代码?
答案 0 :(得分:2)
如果我正确理解了您的问题,则可以使用数组索引提取成对的行,并使用嵌套循环生成排列:
matrix = magic(5);
for jj = 1:size(matrix,1)-1
% The inner loop start index depends on the outer loop index to
% avoid duplications.
for kk = jj+1:size(matrix,1)
NewMatrix = matrix([jj,kk],:)
% Do something with NewMatrix
end
end