2016-09-24 5 views
0

나는 C로 변환하려고하는 MATLAB 코드를 가지고 있으며, 모두 정상적으로 작동하지만, 나는 dist 함수에 갇혀있다. 그것은 Euclidean distance weight function을 계산한다고 말합니다. 정상적인 유클리드 거리 함수를 계산하는 것은 꽤 쉽지만, 정확히 여기서 무게가 의미하는 바를 얻지는 못합니다. 내가 변환하고자하는 코드에는 1x1000이있다. 또는 다른 단어에서 단지 복잡한 값 (x + yi를 의미)을 가진 행 배열이라고 말할 수있다. I는 sest 복잡한 값 1x1000 행렬 말했듯MATLAB에서 dist 함수는 어떻게 작동합니까?

if ((dist(sest(i), -1)) < (dist(sest(i), 1))) 

그래서 그것은 for 루프에서 각각의 값을 취 -1 또는 1과 함께 dist 함수에 넣는다 : 그럼 같은 것을 수행 필자의 경우 dist 함수의 출력은 다시 복소수이다. 현장에서 무슨 일이 벌어지고 있는지 알 겠어? -1과 1은 거기에서 무엇을하고 있습니까? 유클리드 분동 함수는 여기서 어떻게 계산됩니까?

답변

1

다음은

((dist(sest(i), -1)) 

은 실수에 대한

abs(sest(i) + 1) 

단지 동일합니다. ((DIST (sest (i)는, 1))

실제 숫자

abs(1-sest(i)) 

동등하다. 복소수

는 것 같다

((dist(sest(i), -1)) 

의 등가물입니다.
conj(abs(real(sest(i)) + 1)+ imag(sest(i))*j) 

((dist(sest(i), 1)) 

abs(1 -real(sest(i))) + imag(sest(i)*j) 
+0

감사하는 것과 동일하지만, 마지막 부분 ('(DIST (sest (i)에서, 1)) ', 출력은 다시'conj' 있어야 내 의견으로는. – typos

관련 문제