2016-09-24 187 views
0

我有一個MATLAB代碼,我嘗試轉換爲C,它工作正常,但我卡在dist功能。它表示它計算歐幾里德距離權重函數。計算正常的歐幾里得距離函數是相當容易的,但我並不完全明白這裏的權重意味着什麼。在我想要轉換的代碼中有1x1000,或者換句話說,只是一個具有複數值(意爲x + yi)的行數組。隨後,它是這樣的:dist函數在MATLAB中如何工作?

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

正如我所說sest是復值的1x1000的矩陣,所以它需要在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