我已经分解了我的图像,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';
也就是说,您只'
在 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
有一个误解正在发生。秩为 rho 的矩阵的奇异值矩阵具有以下性质: (1) 它是对角线的,并且 (2) 奇异值是有序的,使得s 1 >= s 2 >= s 3 >= ... s rho > 0.你描述的矩阵加法违反了这两个原则。
为了放大,如果您扰乱奇异值矩阵,则不得包含非对角项,并且必须保留阿基米德排序。当第三行中的矩阵 A 与矩阵 s 相加时,得到的矩阵不是奇异值矩阵。