我已经使用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.0543https://stackoverflow.com/questions/21880513
复制相似问题