我使用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
?
答案 0 :(得分:1)
要从A
,u
,s
给出的SVD重建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
答案 1 :(得分:0)
有一种误解正在发生。秩rho的矩阵的奇异值矩阵具有属性(1)它是对角线状的,以及(2)奇异值被排序使得 s 1 >。 = s 2 > = s 3 > = ... s rho >你描述的矩阵加法违反了这两个原则。
要放大,如果扰乱奇异值矩阵,则不得包含非对角线条目,并且必须保留阿基米德序列。当第三行中的矩阵A被添加到矩阵s时,得到的矩阵不是奇异值的矩阵。