2016-09-24 3 views
0

У меня есть код MATLAB, который я пытаюсь преобразовать в C, и он отлично работает, но я застрял в функции dist. В нем говорится, что он вычисляет евклидово расстояние весовой функции. Вычисление нормальной евклидовой дистанционной функции довольно просто, но я точно не понимаю, что здесь означает вес. В коде, который я хочу преобразовать, есть 1x1000, или сказать другими словами просто массив строк со сложными значениями (что означает x + yi). Затем он делает что-то вроде этого:Как работает функция dist в MATLAB?

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

Как я сказал sest является 1x1000 матрицей комплексных величин, поэтому она принимает каждое значение в цикле for и помещает его в функцию dist с -1 или 1, и вывод функции dist в моем случае снова является сложным числом. Любая идея, что происходит за сценой? Что там делает -1 и 1? Как вычисляется здесь весовая функция Евклида?

ответ

1

Здесь

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

просто эквивалент

abs(sest(i) + 1) 

и

для действительных чисел. ((расстояние (сьесть (я), 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

Спасибо, но в последней части '((расстояние (сьесть (I), 1))', то выход должен снова иметь 'conj' по моему мнению. – typos

Смежные вопросы