簡體   English   中英

奇異值分解Matlab

[英]Singular Values Decomposition Matlab

我正在研究上述主題並試圖在Matlab中使用SVD代碼。 我想知道任何人都可以解釋以下代碼行的作用嗎?

Sh(logical(eye(size(Sh)))) = Sh_diag;

我能理解剩下的,只是這行代碼令我感到困惑。 我試過在調試器中運行但仍然無法理解它! 我相信eye返回一個單位矩陣, logicalSh轉換為1和0? 但是我無法弄清楚它們是如何協同工作的,尤其是Sh size 先感謝您。

%Apply SVD to img1
[Uh Sh Vh] = svd(img1);

% Apply SVD to img2
[Uw Sw Vw] = svd(img2);

% Replace singular values of the img1 with the
% singular values of the img2
Sh_diag = diag(Sh);
Sw_diag = diag(Sw);


if (length(img2) >= 256)
    Sh_diag(1:length(Sh), :) = Sw_diag(1:length(Sh), :);
elseif(length(hidden_img) < 256)
    Sh_diag(1:length(img2), :) = Sw_diag(1:length(img2), :);
end
Sh(logical(eye(size(Sh)))) = Sh_diag;%%%????%%

size(Sh)返回矩陣Sh的維數。

eye(size(Sh))創建一個與Sh具有相同尺寸的單位矩陣。

logical(eye(size(Sh)))將單位矩陣的元素轉換為邏輯值。

Sh(...)使用邏輯索引選擇Sh的子矩陣。 在這看起來它只是得到Sh的對角元素。

Sh(...) = Sh_diag正在取代與上述子矩陣Sh_diag

總而言之,這是選擇Sh的對角元素並用Sh_diag的值替換它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM