2014-01-03 3 views
1

Я использую pdist2(x(i), y(j), 'euclidean') формулу найти евклидово расстояние между х и у вместо ручного методаКак найти матрицу расстояний в MATLAB

sqrt((x(i)-y(i))^2). 

И найти коэффициент совместного отношение я использую corrcoeff(x(i), y(j)). Правильно ли это найти коэффициент корреляции и эвклидовое расстояние между матрицами x и y? Я получаю разные ответы, когда использую формулу и ручной метод.

+3

Это выглядит правильно, но, вероятно, ' pdist2 (x, y, 'euclidean') 'имеет больше смысла, чем' pdist2 (x (i), y (j), 'euclidean') 'делает. Покажите свой код, чтобы мы могли понять, в чем проблема. –

ответ

1

Корреляция между двумя матрицами может быть вычислена как:

r = corr2(x,y) 

Теперь, если вы после поэлементного расстояния, как насчет:

dist=gsqrt((x-y).^2); 
2

Я думаю, что это неверно.

Я полагаю x и y являются матрицы, так что вы используете pdist2 для вычисления расстояния между наблюдением я (от x(i)) и J (от y(j)). В случае ручного метода вы используете индекс i в обоих из них. Возможно, различия связаны с неправильным использованием индексов i и j. Покажите нам свой код, чтобы мы могли его подтвердить.

Кстати, как отметил @Luis, лучше использовать pdist2 для вычисления всех расстояний в одно и то же время (это намного быстрее). Итак, если у вас есть две матрицы x и y, используйте: pdist2(x,y).

То же самое для корреляции.

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