Как получить исходную матрицу после выполнения symrcm или symamd в MATLAB? - PullRequest
1 голос
/ 08 октября 2019

Я использую алгоритм Cuthill-McKee. После нахождения нужного вектора мне нужно восстановить исходную матрицу. Я нашел ответ здесь https://www.mathworks.com/matlabcentral/answers/94946-how-do-i-obtain-the-original-mapping-after-performing-symrcm-in-matlab-7-1-r14sp3, но для моих изображений я получаю «Индекс превышает размеры матрицы». Есть ли другой способ сделать это? (Желательно без наличия оригинальной матрицы)

symV %original matrix
k1 = symrcm(symV)
matrix_after_cm = symV(k1,k1);
spy(first_after_cm)

1 Ответ

0 голосов
/ 25 октября 2019

Мне ответили на вопрос здесь https://www.mathworks.com/matlabcentral/answers/484202-how-to-obtain-the-original-matrix-after-performing-symrcm-or-symamd-in-matlab?s_tid=ab_old_mlc_ans_email_view#comment_754323

Окончательное решение

[~,q] = sort(k1);
AfromB = first_after_cm(q,q);  % Elapsed time is 0.002503 seconds.
norm(AfromB-symV)  % ans = 0
...