[英]Singular Values Decomposition Matlab
我正在研究上述主題並試圖在Matlab中使用SVD代碼。 我想知道任何人都可以解釋以下代碼行的作用嗎?
Sh(logical(eye(size(Sh)))) = Sh_diag;
我能理解剩下的,只是這行代碼令我感到困惑。 我試過在調試器中運行但仍然無法理解它! 我相信eye
返回一個單位矩陣, logical
將Sh
轉換為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.