我已经使用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;
现在,我如何从matrix new
取回我的矩阵A
发布于 2014-02-19 21:36:08
要根据u
、s
、v
给出的奇异值分解重构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
https://stackoverflow.com/questions/21880513
复制相似问题