23 lines
800 B
Matlab
23 lines
800 B
Matlab
function adjacencyMatrix = calculateDistanceMatrix(positions)
|
||
% 计算任意两个城市之间的直线距离,返回加权邻接矩阵
|
||
% 输入:positions - 包含城市坐标的矩阵 (n行3列)
|
||
% 输出:adjacencyMatrix - n×n的加权邻接矩阵
|
||
|
||
% 获取城市数量
|
||
numCities = size(positions, 1);
|
||
|
||
% 初始化邻接矩阵
|
||
adjacencyMatrix = zeros(numCities, numCities);
|
||
|
||
% 计算每对城市之间的欧几里得距离
|
||
for i = 1:numCities
|
||
for j = 1:numCities
|
||
if i ~= j
|
||
% 计算欧几里得距离
|
||
dx = positions(i, 2) - positions(j, 2);
|
||
dy = positions(i, 3) - positions(j, 3);
|
||
adjacencyMatrix(i, j) = sqrt(dx^2 + dy^2);
|
||
end
|
||
end
|
||
end
|
||
end |