dist函数如何在MATLAB中工作?

时间:2016-09-24 08:12:24

标签: matlab

我有一个MATLAB代码,我尝试将其转换为C,它工作得很好,但我仍然坚持dist函数。它说它计算欧几里德距离权重函数。计算正常欧几里德距离函数非常简单,但我并没有完全得到这里的权重。在我想要转换的代码中有1x1000,或者换句话说只是一个具有复杂值的行数组(意思是x + yi)。然后它做了这样的事情:

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

正如我所说sest是复数值的1x1000矩阵,所以它在for循环中取每个值并将其放入dist函数中,其中包含-1或1,并且在我的情况下,dist函数的输出又是一个复数。知道幕后发生了什么吗? -1和1在做什么?欧几里德权重函数如何计算在这里?

1 个答案:

答案 0 :(得分: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)