Как скопировать 2 строки одновременно? - PullRequest
0 голосов
/ 10 июня 2019

Общая идея Существует матрица MxN, из которой строки должны быть скопированы в другую матрицу с двумя строками в момент времени>

Пример>

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 строки, используя перестановки без метода повторения? Идея состоит в том, чтобы создать временную матрицу, в которой применяются некоторые условия, начиная с 1-й и 2-й строки и до последней, в зависимости от размера матрицы, предоставленной пользователем (поэтому не всегда одинаковый размер). Для 1-й извлеченной матрицы это будет:

NewMatrix= [V1; V2]
    condition
end

Trouble Способ, которым это должно быть повторено / построено (я полагаю, так?) Элемент 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 Ответ

2 голосов
/ 10 июня 2019

Если я правильно понимаю ваш вопрос, вы можете извлечь пары строк, используя индексацию массива, и сгенерировать перестановки, используя вложенные циклы:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...