루프를 실행하려고 할 때 MatLab에서 문제가 발생했습니다. 루프의 각 반복에 대해 3x3 행렬에 대한 고유 값 및 고유 벡터가 계산됩니다 (행렬은 반복마다 다릅니다). 또한, 각 반복은 항상 [0 a 0] 형태의 하나의 고유 벡터를 산출해야하며, 중간 값, a만이 0이 아닙니다.루프 중에 MatLab의 0 값 읽기
이 경우 고유 벡터 행렬의 열 색인을 가져와야합니다. 이를 위해 나는 (매트릭스가 생성됩니다) 내 주요 루프에서 다음 루프를 설정 :
for i = 1:3
if (eigenvectors(1,i)==0) && (eigenvectors(3,i)==0)
index_sh = i
end
end
문제는 문제의 고유 벡터 행렬 때로는 형태의 출력이 것입니다 :
을eigenvectors =
0.0000 0.6663 0.7457
-1.0000 0.0000 0.0000
-0.0000 -0.7457 0.6663
그리고이 경우
는 매트랩은 어떤을 할당하지 않습니다이 경우 내 코드가 잘 작동, 나는 그러나 index_sh = 3.
를 얻을 수있는
eigenvectors =
-0.7310 -0.6824 0
0 0 1.0000
0.6824 -0.7310 0
때때로 매트릭스의 형식은 이 경우
index_sh
을 1과 같게 설정하되
index_sh
값으로 설정하십시오.
누구든지이 문제를 해결할 수있는 방법을 알고 있다면 MatLab이 0을 쓸 때 MatLab에서 값을 할당합니다. 0.0000
매우 감사하게 생각합니다!
는 보통 float 정밀도의 문제처럼 보인다. 공차를 사용하십시오. http://stackoverflow.com/questions/686439/why-is-24-0000-not-equal-to-24-0000-in-matlab –
을 참조하십시오. 어떻게 든이 일을 어떻게 처리 할 수 있는지 아세요? – Kristian
고유 벡터 (1, i) == 0.0을 사용해보십시오. 작동하는지 말해봐. 또 다른 옵션은 임의의 (eigenvectors (1, i))를 조건으로 사용하는 것입니다. 또한 귀하의 경우 요소가 0이 아닌 것으로 의심되므로 abs (eigenvectors (1, i)) <0.0000001 (매우 작은 숫자)과 같은 조건을 사용하는 것이 좋습니다 – freude