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';

因此,在您的情况下,只需替换ssw

m_rec = u*sw*v';

也就是说,您只'在 matrix 中缺少一个共轭转置 ( ) 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 回答
0

有一个误解正在发生。秩为 rho 的矩阵的奇异值矩阵具有以下性质: (1) 它是对角线的,并且 (2) 奇异值是有序的,使得s 1 >= s 2 >= s 3 >= ... s rho > 0.你描述的矩阵加法违反了这两个原则。

为了放大,如果您扰乱奇异值矩阵,则不得包含非对角项,并且必须保留阿基米德排序。当第三行中的矩阵 A 与矩阵 s 相加时,得到的矩阵不是奇异值矩阵。

于 2014-08-17T01:36:09.050 回答