MATLAB에서 대칭 행렬에 대해 [V,D] = eig(a)
명령을 실행하면 가장 큰 고유치 (및 관련 벡터)가 마지막 열에 있습니다. 그러나 비대칭 행렬로 실행할 때 가장 큰 고유치가 첫 번째 열에 있습니다.MATLAB의 고유 값
최대 고유 값과 연관된 고유 벡터를 계산해야하는 고유 벡터 중심성을 계산하려고합니다. 따라서 가장 큰 고유치가 두 개의 개별적인 장소에 나타나므로 솔루션을 찾기가 어렵습니다.
MATLAB에서 대칭 행렬에 대해 [V,D] = eig(a)
명령을 실행하면 가장 큰 고유치 (및 관련 벡터)가 마지막 열에 있습니다. 그러나 비대칭 행렬로 실행할 때 가장 큰 고유치가 첫 번째 열에 있습니다.MATLAB의 고유 값
최대 고유 값과 연관된 고유 벡터를 계산해야하는 고유 벡터 중심성을 계산하려고합니다. 따라서 가장 큰 고유치가 두 개의 개별적인 장소에 나타나므로 솔루션을 찾기가 어렵습니다.
당신은 그냥 쉽게이 발생하는 위치의 최대 고유 인덱스를 얻을 수있는 주요 대각선 및 기능 MAX를 추출하는 기능 DIAG를 사용하여 수행 할 수 있습니다 D
에서 가장 큰 고유의 색인을 찾을 수있다 :
[V,D] = eig(a);
[maxValue,index] = max(diag(D)); %# The maximum eigenvalue and its index
maxVector = V(:,index); %# The associated eigenvector in V
참고 :woodchips points out, 당신이 비대칭 행렬에 대한 복잡한 고유 값을 가질 수 있습니다. 복잡한 입력 X
에서 작동 할 때 MAX 함수는 복소수 max(abs(X))
의 크기를 사용합니다. 동일한 크기의 요소의 경우, 위상 각 max(angle(X))
이 사용됩니다.
그게 하나야. –
내가 일반적으로 할 것은 : 비대칭 행렬은 복잡한 고유 값을 가지고하는 경향이
[V D] = eig(a);
[D order] = sort(diag(D),'descend'); %# sort eigenvalues in descending order
V = V(:,order);
이것은 PCA를 계산할 때 유용한보다 일반적인 솔루션입니다. – psalvaggio
'eigs'에서이 작업을 수행하는 방법은 무엇입니까? – kyle
참고.
eig(rand(7))
ans =
3.2957
-0.22966 + 0.58374i
-0.22966 - 0.58374i
-0.38576
0.49064
0.17144 + 0.27968i
0.17144 - 0.27968i
은 또한 (고유치의 크기에 따라 기본 알고리즘은 거의 정렬 된 순서를 생산하는 경향이 있지만) 명시 적으로 분류 고유 값을 반환하지 않습니다 EIG 점에 유의,하지만 당신은 정렬을 할 경우에도, 복잡한 벡터에서 정렬이 어떻게 작동하는지 이해해야합니다.
sort(rand(5,1) + i*rand(5,1))
ans =
0.42343 + 0.51539i
0.0098208 + 0.76145i
0.20348 + 0.88695i
0.43595 + 0.83893i
0.8225 + 0.91264i
정렬은 복합 입력에 적용될 때 복소수의 크기에 따라 작동합니다.
+1은 복소수를 생각하지 않았습니다. 나는 보통 실제 고유 값에 대해서만 신경을 쓴다고 생각한다. – Amro
최대 고유 값과 관련된 고유 벡터 만 신경 쓰면 eigs
을 사용하는 것이 더 좋지 않습니까?
[V, D] = eigs(a, 1, 'lm'); %// get first eigenvector with largest eigenvalue magnitude.
고유 값 배열을 명시 적으로 검색하고 최대 값을 얻는 것이 어렵습니까? –