怎么用Matlab计算很多散点之间最短距离

 我来答
大野瘦子
高粉答主

2019-10-23 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.2万
展开全部

这样:

clear;

clc;

x=rand(7,1);

y=rand(7,1);

dist=@(var) sum(sqrt((var(1)-x).^2+(var(2)-y).^2));%var(1)=x;var(2)=y

var0=rand(2,1);

[var,minDistance,exitflag]=fminunc(dist,var0)

plot(x,y,'o','markerfacecolor','r','markersize',6);

hold on;

plot(var(1),var(2),'p','markerfacecolor','g')

for i=1:7

plot([var(1),x(i)],[var(2),y(i)],':');

end

扩展资料:

注意事项

先构造一个n(各点的数量)维矩阵,如果是无向图则是对称矩阵

a(1,2)=2;a(1,3)=8;a(1,4)=1;

a(2,3)=1;a(2,3)=6;a(2,5)=1;

a(3,4)=7;a(3,5)=5;a(3,6)=1;a(3,7)=2;

a(4,7)=9;

a(5,6)=3;a(5,8)=2;a(5,9)=9;

a(6,7)=4;a(6,9)=6;

a(7,9)=3;a(7,10)=1;

a(8,9)=7;a(8,11)=9;

a(9,10)=1;a(9,11)=2;

a(10,11)=4;

找到矩阵中的每一个非零元:

[i,j,v]=find(a);

利用最短距离函数求解:

[x,y,z]=graphshortestpath(b,1,11,'Directed',false) % Directed是标志图为有向或无向的属性,该图是无向图,对应的属性值为false,或0

功韦诚0eA
2017-05-12 · TA获得超过207个赞
知道小有建树答主
回答量:214
采纳率:100%
帮助的人:56.1万
展开全部
可以使用norm函数,比如:中心点P别的点Anorm(repmat(P, size(A, 1), 1) - A)可以计算出来。或者你将数据贴一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-05-12
展开全部
用迪杰斯特拉算法或佛洛依德算法.网上有图论工具箱,你可以下个.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式