У меня есть разные интерпретация вашего вопроса, я думаю, вы спрашиваете, как заставить вашу функцию выводить все расстояния для двух списков (x, y) коордов? Если да, то как это:
function [d] = Dist(A,B)
d=sqrt(((A(:,1)-B(:,1)).^2+(A(:,2)-B(:,2)).^2));
end
Таким образом, вы должны изменить свой ^
от матричной операции к операции поэлементно вектора .^
, а затем вы должны получить доступ к первой колонке, но все строки, т.е. (1,:)
например
A = [0,0;
0,1;
1,1]
B = [1,1;
1,1;
1,1]
Dist(A,B)
ans =
1.41421
1.00000
0.00000
Кстати можно обметать эту функцию, как это и до сих пор получить тот же результат:
function [d] = Dist(A,B)
d=sqrt(sum((A-B).^2,2));
end
Ваш код выглядит ОК. Разве это не работает для вас? Не уверен, что я понимаю ваш вопрос. Как вы называете свою функцию 'dist'? – Floris
Немного непонятно, что вы спрашиваете, возможно, вы можете отредактировать свой вопрос и добавить небольшой пример с числами? – Dan