我有一个MATLAB代码,我尝试将其转换为C,它工作得很好,但我仍然坚持dist
函数。它说它计算欧几里德距离权重函数。计算正常欧几里德距离函数非常简单,但我并没有完全得到这里的权重。在我想要转换的代码中有1x1000,或者换句话说只是一个具有复杂值的行数组(意思是x + yi)。然后它做了这样的事情:
if ((dist(sest(i), -1)) < (dist(sest(i), 1)))
正如我所说sest
是复数值的1x1000矩阵,所以它在for
循环中取每个值并将其放入dist
函数中,其中包含-1或1,并且在我的情况下,dist
函数的输出又是一个复数。知道幕后发生了什么吗? -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)