【问题标题】:How does dist function work in MATLAB?dist 函数在 MATLAB 中是如何工作的?
【发布时间】:2016-09-24 19:23:36
【问题描述】:

我有一个 MATLAB 代码,我尝试将其转换为 C,它工作正常,但我被困在 dist 函数上。它说它计算欧几里得距离权重函数。计算正常的欧几里得距离函数非常简单,但我不完全明白这里的权重是什么意思。在我要转换的代码中,有 1x1000,或者换句话说,只是一个具有复杂值的行数组(意思是 x + yi)。然后它会做这样的事情:

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

正如我所说,sest 是 1x1000 的复数值矩阵,因此它在 for 循环中获取每个值,并将其放入带有 -1 或 1 的 dist 函数中,以及 dist 的输出就我而言,函数又是一个复数。知道幕后发生了什么吗? -1 和 1 在那里做什么?这里的欧几里得权重函数是如何计算的?

【问题讨论】:

    标签: matlab


    【解决方案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)
    

    【讨论】:

    • 谢谢,但在最后一部分((dist(sest(i), 1)),我认为输出应该再次有conj
    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多