Эквивалент pdist2 в MATLAB версии 7

Мне нужно вычислить евклидово расстояние между двумя матрицами в матлаб. В настоящее время я использую bsxfun и рассчитываю расстояние, как показано ниже (я прилагаю фрагмент кода):

for i=1:4754
test_data=fea_test(i,:);
d=sqrt(sum(bsxfun(@minus, test_data, fea_train).^2, 2));
end

Размер fea_test составляет 4754x1024, а fea_train - 6800x1024, использование его цикла for приводит к тому, что выполнение for занимает примерно 12 минут, что я считаю слишком большим. Есть ли способ быстрее вычислить евклидово расстояние между обеими матрицами?

Мне сказали, что, удалив ненужные циклы for, я могу сократить время выполнения. Я также знаю, что pdist2 может помочь сократить время вычислений, но, поскольку я использую версию 7. Matlab, у меня нет функции pdist2. Обновление не вариант.

Любая помощь.

С уважением,

Бхавья

9
задан Shai 12 June 2013 в 10:30
поделиться