首页 > 解决方案 > 如何在matlab中计算一些随机生成的矩阵和给定数组之间的距离

问题描述

在此代码中,生成了 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

标签: arraysmatlabmatrixdistance

解决方案


我没有完全理解最后一部分。但是,如果您有 2 个坐标列表,请说

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

x并且您想要 in 中的所有点和 in 中的所有点之间的成对距离y,您可以使用pdist2

D = pdist2(x,y);

现在D(1,2)将是从x(1)y(2)等的欧几里得距离。


推荐阅读