を使用して画像を分解し、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
ですか?
を使用して画像を分解し、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
ですか?
A
によって与えられた SVD から再構築するu
にはs
、v
次を使用します。
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