【问题标题】:How to obtain the original matrix after performing symrcm or symamd in MATLAB?在MATLAB中执行symrcm或symamd后如何获取原始矩阵?
【发布时间】:2019-10-08 12:55:36
【问题描述】:

我使用 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)

【问题讨论】:

  • 你不能在计算之前将矩阵复制到一个新变量吗? symV_orignal = symV; k1=symrcm(symV); ....
  • 我的意思是原始矩阵将不可用

标签: matlab matrix sparse-matrix


【解决方案1】:

我在这里得到了回答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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多