2011-12-13 8 views
2

내가 내 영 공간 근사치로 (A)의 마지막 열을 사용하여, 상기 SVD를 계산효율적

[U, S, V] = svd(A) 

를 사용하여이 있었나 최상의 근사치 인 영 공간 또는 단일 차원 공간을 구하는. A가 실제로 커지면, 이것이 계산 속도를 늦추는 것을 깨달았습니다.

null (A)의 경우 설명서에 어쨌든 SVD가 있음을 나타내는 것으로 보입니다. 또한 A가 전체 등급 인 경우 작동하지 않습니다. SVD는 가장 큰 특이 값을 찾은 다음 다음 값을 찾음으로써 진행됩니다.

이것은 큰 병목 현상 인 것 같습니다. 이것에 대한 도움을 정말로받을 것입니다. MATLAB을 사용하고 있습니다.

감사합니다.

+1

매트릭스 A는 어디서 왔으며 계산 목적은 무엇입니까? 왜 가장 작은 고유치가 그렇게 중요합니까? 일반적으로 가장 적은 것을 원합니다 (예 : PCA). – kol

+0

A는 4xN 매트릭스입니다. 여기에는 N 포인트의 균등 좌표가 포함됩니다. 기본적으로 Ax = 0에 대한 해답이 필요합니다. (기본적으로 가장 가까운 피팅 평면이 필요합니다.) – Navneet

답변

0

모든 점이 평면에있는 경우에는 샘플로 SVD를 호출하십시오.

+0

plane not plain;) – Smash

+0

샘플을 얻는 것은 내가 지금 끝낼 것이라고 생각하지만, A를 사용하여 행렬을 구성함으로써 가장 작은 특이 값 벡터를 얻는 방법이 있다고 생각합니다. – Navneet

1

이 질문에 대한 대답은 실제로는 Ax = 0을 해결하는 것입니다. 이를 위해 완전한 영 공간 계산은 대개 비효율적입니다. x에 대한 최소 제곱 근사값을 원한다면 을 참조하십시오.

svd(A,0)을 통한 "경제"SVD는 정사각형이 아닌 행렬 (전체 S는 계산하지 않고 0이 아닌 블록 만 계산)에 유용 할 수 있습니다. 환원 (가우스 소거법) SVDQR decomposition :

+0

'A \ 0 '은'0'을 리턴 할 것입니다. – Nzbuu

+0

사실, 왜냐하면 그것은 'A x = 0'에 대한 가장 작은 표준의 해이기 때문입니다. – silvado

1

This 위키 문서 세 영 공간의 수치 계산 방법을 설명한다. 간단히 말해서, (1) 축소는 "반올림 오류가있는 경우 수치 정확도 문제로 인해 영 공간의 실제 계산에 적합하지 않습니다", (2) SVD가 "최첨단 접근 방식"이지만 "일반적으로 같은 크기의 행렬을 갖는 여러 행렬 - 행렬 곱셈과 거의 동일합니다."그리고 (3) QR 분해의 수치 안정성과 비용은 "SVD와 저감 접근법의 차이"입니다.

SVD가 너무 느리면 QR decomposition 기회를 얻을 수 있습니다. , A4<N4xN 행렬이다 A'의 QR 인수 분해를 사용하여, 우리는 P는 순열 행렬 행렬 등이 A'*P = Q*R = [Q1 Q2]*R을 찾을 수 있습니다 "QNxNRNx4입니다 :. 다음과 같이 표기와 알고리즘이다. 매트릭스는 Q1 NX4이며 Q의 제 4 열로 구성된다. 매트릭스는 Q2Nx(N-4)이고 Q의 마지막 열 N-4 이루어진다. A*Q2 = 0 때문에 Q2A 범위의 영 공간의 열. "

Matlab 구현 : [Q, R, P] = qr(A', 'matrix'); 매트릭스 Q2 = Q(:, 5:end);의 열은 A의 널 공간을 제공합니다.

+0

의미가 있습니다. 단항 값이 반전되는 A를 사용하여 다른 행렬을 만드는 방법은 없지만? 그 후에 svds를 호출하고 첫 번째 또는 두 번째 열만 가져올 수 있습니다 ... 이보다 더 빠를 수 있습니다. 어쨌든, 난 그냥 샘플을 coz N 너무 어쨌든했다. 답장을 보내 주셔서 감사합니다. – Navneet