1

を使用して画像を分解し、svd行列を追加して特異値を変更しましたA。この行列を取り戻すにはどうすればよいですか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からマトリックスを取得するにはどうすればよいnewですか?

4

2 に答える 2

1

Aによって与えられた SVD から再構築するuにはsv次を使用します。

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
于 2014-02-19T13:36:07.563 に答える