2016-09-24 148 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