Как рассчитать расстояние между некоторой случайно сгенерированной матрицей и заданным массивом в matlab - PullRequest
1 голос
/ 14 марта 2019

Здесь, в этом коде, генерируется 50 случайных координат (численность населения 50).У меня есть массив,

B = [150 90; -100 -120; -80 130; 140 -70; 60 120; -90 -130].

Я хочу рассчитать расстояние каждые 50 координат от каждой из координат массива B.После вычисления расстояния я должен сохранить все значения расстояний отдельно в массиве (или матрице), чтобы впоследствии получить их.Пожалуйста, помогите мне рассчитать расстояние.

clear all
clc

%Common Parameter Setting
N=2;        % Number of variables
M=50;       % Populations size 50
F=0.5;      % Mutation factor
C=0.9;      % Crossover rate
I_max=20;   % Max iteration time
Run=1;      % The number of test time
X_max=[100,100];
X_min=[-100,-100];

%Func=@Rastrigin;

% 2.The whole test loop
for r=1:Run
    iter=0;
    % 1.Generate MxN matrix
    for m=1:M
        for n=1:N
            X(m,n)=X_min(n)+rand()*(X_max(n)-X_min(n));
        end
        fprintf('value of X:');
        disp(X);
    end
end

1 Ответ

1 голос
/ 14 марта 2019

Я не совсем понял последнюю часть. Но если у вас есть 2 списка координат, скажите

x = randn(10,2); %10 points in 2D
y = randn(3,2); % 3 others points in 2D

и вам нужно попарное расстояние между всеми точками в x и всеми точками в y, вы можете использовать pdist2

D = pdist2(x,y);

Теперь D(1,2) будет евклидовым расстоянием от x(1) до y(2) и так далее.

...