如何同时复制2行?

时间:2019-06-09 22:30:36

标签: matlab matrix

总体思路 有一个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矩阵?为了避免每次用户提供不同大小的矩阵时都要调整代码?

1 个答案:

答案 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