matlab 求助

比如一个矩阵A=5789,数值的意思是两点间的距离比如5记录了第一个点到第二个点的距离为5,7是第二个点到第三个点的距离,一次类推。想得到一个矩阵B,记录了每两个点的距离... 比如一个矩阵A=5 7 8 9 ,数值的意思是两点间的距离 比如5记录了第一个点到第二个点的距离为5,7是第二个点到第三个点的距离,一次类推。想得到一个矩阵B,记录了每两个点的距离小于20。比如第一个点到第三个点距离为5+8小于20,第一个点到第四个点的距离为5+7+8大于20,所以B矩阵的一个数值为1。求matlab 实现,求大神帮忙,不知道说的明白否。 展开
百度网友5dfd0c5
2013-01-07 · TA获得超过122个赞
知道答主
回答量:49
采纳率:0%
帮助的人:55.9万
展开全部
%由你给的矩阵A中四个元素知有5个点,按你的意思,构造这5个点的邻接矩阵A1;
A1=zeros(5,5);
A1(1,2)=5;
A1(2,3)=7;
A1(3,4)=8;
A1(4,5)=9;
A1=A1+A1';
A1(find(A1==0))=inf;
%用flody算法求任意两点的距离,构成矩阵A2,flody算法的matlab程序自己网上去搜,继续下面的
A2=[
10 5 12 20 29
5 10 7 15 24
12 7 14 8 17
20 15 8 16 9
29 24 17 9 18
];

%你后面的没说清楚,我的理解是小于20的记为1,大于或等于20的记为0,
%如理解错误,稍微修改下即可
B=A2<20
%求的矩阵B为
B=[
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
]

以上直接可以看出来哪些点之间的距离小于20了

flody算放如下,做成M文件后,在命令窗直接调用
function [D,path,min1,path1]=floyd(a,start,terminal)
D=a;n=size(D,1);path=zeros(n,n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j;
end, end, end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end, end, end,end
if nargin==3
min1=D(start,terminal);
m(1)=start;
i=1;
path1=[ ];
while path(m(i),terminal)~=terminal
k=i+1;
m(k)=path(m(i),terminal);
i=i+1;
end
m(i+1)=terminal;
path1=m;
end
俊永翼F
高粉答主

2020-06-16 · 说的都是干货,快来关注
知道答主
回答量:8.1万
采纳率:3%
帮助的人:3881万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式