2014-02-19 17 views
1

나는 svd을 사용하여 이미지를 분해하고 행렬을 추가하여 단일 값을 수정했습니다. A라고 가정 해 봅니다. 이 행렬을 어떻게 되 찾을 수 있습니까 A. 예를 들어수정 후 SVD를 사용하여 원본 이미지를 재구성하는 방법

:

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; 

지금은 매트릭스 new에서 내 매트릭스 A을 다시 얻을 수있는 방법? 이다

m_rec = u*sw*v'; 

, 당신이있어 :

답변

1

u에 의해 주어진 그 SVD, s, v에서 A를 재구성하기 위해 당신은 ssw에 의해 대체 따라서 귀하의 경우

m_rec = u*s*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 
+0

Luis Mendo, 당신의 친절한 대답을 위해서, 사실 저는 행렬 "new"로부터 행렬 "A"를 얻고 싶습니다. – user3327980

+0

@ user3327980 "new"행렬에서'v'를'v'로 바꿔야합니다. –

+0

okay new = u * sw * v '; 이제 행렬 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 '; 이제 행렬 "new"에서 행렬 "A"를 얻고 싶습니다 ... thr이 친절하게 나를 도와줍니다. – user3327980

0

오해가 있습니다. 랭크 (ρ)의 매트릭스에 대한 특이 값들의 행렬은 (1)처럼 대각선 (2) 특이 값이 정렬 특성을 갖도록 S 1> = S 2> = 의 그 > = s ρ> 0. 설명하는 행렬 추가는 두 가지 원칙을 위반합니다.

증폭하려면 특이 값의 행렬을 혼란스럽게하는 경우 대각선이 아닌 항목을 포함하면 안되며 Archimedean 순서를 유지해야합니다. 3 행의 행렬 A가 행렬 s에 더해지면 결과 행렬은 특이 값의 행렬이 아닙니다.