求邻接矩阵matlab,如何使用MATLAB绘制邻接矩阵
一種方法是使用某種靜電斥力來編寫自己的算法,就像在您鏈接的論文中一樣。大概可以用不到40行的Matlab來完成(看起來好像是others have tried)。但有時(shí)候,使用外部工具比在Matlab中完成所有工作更好。繪制圖形的最佳工具可能是Graphviz,它附帶一套用于繪制不同樣式圖形的工具。對(duì)于無向圖,要使用的圖是neato。我不知道它使用哪種算法來分發(fā)節(jié)點(diǎn),但我想它與您論文中的相似(其中一個(gè)參考文獻(xiàn)甚至提到Graphviz!)。
這些工具的輸入是一個(gè)非常簡單的文本格式,很容易使用Matlab生成。例如(這可以在Linux,你可能必須改變它在Windows中位):
% adjacency matrix
A = [1 1 0 0 1 0;
1 0 1 0 1 0;
0 1 0 1 0 0;
0 0 1 0 1 1;
1 1 0 1 0 0;
0 0 0 1 0 0];
% node labels, these must be unique
nodes = {'A', 'B', 'C', 'D', 'E', 'F'};
n = length(nodes);
assert(all(size(A) == n))
% generate dot file for neato
fid = fopen('test.dot', 'w');
fprintf(fid, 'graph G {\n');
for i = 1:n
for j = i:n
if A(i, j)
fprintf(fid, ' %s -- %s;\n', nodes{i}, nodes{j});
end
end
end
fprintf(fid, '}\n');
fclose(fid);
% render dot file
system('neato -Tpng test.dot -o test.png')
其產(chǎn)生的文件test.dot:
graph G {
A -- A;
A -- B;
A -- E;
B -- C;
B -- E;
C -- D;
D -- E;
D -- F;
}
最后的圖像測試。PNG(注意,你的鄰接矩陣中列出的第一項(xiàng)與自身的連接,這說明隨著環(huán)路節(jié)點(diǎn)A):
作為一個(gè)更復(fù)雜的例子,你可以繪制巴基球作為gplot文檔中:
[A, XY] = bucky;
nodes = arrayfun(@(i) num2str(i), 1:size(A,1), 'uni', 0);
與結(jié)果(請(qǐng)注意,布局由NEATO完成的,它不使用XY):
總結(jié)
以上是生活随笔為你收集整理的求邻接矩阵matlab,如何使用MATLAB绘制邻接矩阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [源码和文档分享]基于C语言的语法高亮设
- 下一篇: matlab人脸追踪,求大神帮助我这个菜