我是matlab的新用户,需要帮助从数据集创建邻接矩阵。 数据集采用以下模式
A=[
0 1
0 2
0 5
1 2
1 3
1 4
2 3
2 5
3 1
3 4
3 5
4 0
4 2
5 2
5 4
];
上面的邻接矩阵将是
M= 0 1 1 0 0 1
0 0 1 1 1 0
0 0 0 1 0 1
0 1 0 0 1 1
1 0 1 0 0 0
0 0 1 0 1 0
我需要代码才能在matlab中执行上述任务
答案 0 :(得分:1)
欢迎来到SO!请阅读how to ask good questions.
上的以下指南要详细说明@Ankur的评论,请同时查看 Open letter to students with homework problems :" ...如果您的问题只是复制粘贴作业问题,期望它被低估,关闭和删除 - 可能在很短的时间内。"
你需要做的很简单:
M
或M=zeros(6);
预先分配M(6,6)=0;
矩阵(此选项假定M
不存在)。A
中的索引,而你首先需要将它们递增1
。"A+1"
包含M
的坐标,其中应该有1
(我注意到邻接矩阵在您的情况下是不对称的)。从这里开始访问正确的单元格,可以使用sub2ind(...)
来完成。最后,生成M
的代码是:
M=zeros(6);
M(sub2ind(size(M), A(:,1)+1, A(:,2)+1))=1;
答案 1 :(得分:1)
您可以使用sparse
。请查看该功能,尝试一下您的问题,然后将鼠标悬停在以下矩形上进行检查:
full(sparse(A(:,1)+1, A(:,2)+1, 1))
答案 2 :(得分:0)
我不理解你的矩阵A,但是假设A与所寻找的邻接矩阵M具有相同的维度,并且你只想将所有零条目保持为“0”,但是想要使其成为正数条目等于“1”,然后只做:
M = (A>0)
正如上面@ Dev-iL的评论所指出的,这是一个“如何在已知位置修改矩阵值的问题。它实际上并不涉及邻接......”