我已經使用svd
分解了我的圖像,並通過添加矩陣修改了奇異值,假設爲A
。我怎樣才能找回這個矩陣A
。如何使用SVD修改後重建原始圖像
例如:
m=[1 2 3; 4 5 6; 7 8 9];
[u s v]= svd(m);
A=[0 2 1; 3 5 6; 8 9 4];
sw= s+A;
new= u*sw*v;
現在我如何從矩陣new
找回我的矩陣A
?
我已經使用svd
分解了我的圖像,並通過添加矩陣修改了奇異值,假設爲A
。我怎樣才能找回這個矩陣A
。如何使用SVD修改後重建原始圖像
例如:
m=[1 2 3; 4 5 6; 7 8 9];
[u s v]= svd(m);
A=[0 2 1; 3 5 6; 8 9 4];
sw= s+A;
new= u*sw*v;
現在我如何從矩陣new
找回我的矩陣A
?
爲了重建從s
v
通過u
鑑於其SVD,A
你會使用
m_rec = u*s*v';
所以你的情況只需更換s
通過sw
:
m_rec = u*sw*v';
也就是說,你僅在您的矩陣new
中缺少共軛轉置('
)。
但是,您應用於s
的修改似乎太大,甚至不是對角線,因此您不會正確重構m
。如果修改很小,你會。例如:
>> sw = s + diag(.1*randn(1,3));
>> m_rec = u*sw*v'
m_rec =
0.9987 1.9977 3.0348
4.0070 5.0543 6.0256
7.0533 8.0348 9.0543
有一個誤會正在進行。奇異值的用於秩RHO的矩陣的矩陣具有性質(1)它是對角像和(2)的奇異值被排序,使得小號 > = 小號 > = 小號 > = ... s rho> 0.您描述的矩陣添加違反了兩個原則。爲了放大,如果擾亂奇異值矩陣,您不得包含非對角線條目,並且必須保留阿基米德排序。當第三行中的矩陣A被添加到矩陣s時,結果矩陣不是奇異值矩陣。
謝謝路易斯門多,爲您的答覆,其實我想從矩陣「新」矩陣「A」。 – user3327980
@ user3327980在你的矩陣「new」中,你需要用'v''替換'v'。 –
好吧new = u * sw * v';現在我怎麼能得到矩陣A ..?請重新閱讀我的例子.. m = [1 2 3; 4 5 6; 7 8 9]; [u s v] = svd(m); A = [0 2 1; 3 5 6; 8 9 4]; sw = s + A; new = u * sw * v';現在我想從矩陣「新」中得到矩陣「A」... ...以任何方式善意地幫助我 – user3327980