Мне нужно вычислить евклидово расстояние между двумя матрицами в матлаб. В настоящее время я использую 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. Обновление не вариант.
Любая помощь.
С уважением,
Бхавья