2

我想在 MATLAB 中创建一个随机邻接矩阵,使得权重的总和等于边数。最后找到拉普拉斯矩阵使用

L = diag(sum(A)) - A

然后绘制它。有什么办法吗?提前致谢。

4

1 回答 1

6

无向图的邻接矩阵只是一个对称方阵。
如果您仅在权重上对节点的度数没有限制,那么我会建议类似

n ; % number of nodes in the graph
density = 1e-3; % a rough estimate of the amount of edges       
A = sprand( n, n, density ); % generate adjacency matrix at random
% normalize weights to sum to num of edges
A = tril( A, -1 );    
A = spfun( @(x) x./nnz(A), A );    
% make it symmetric (for undirected graph)
A = A + A.';

我在这段代码中使用过:

  • sprand生成随机稀疏矩阵。
  • spfun帮助标准化边缘权重。
  • tril只提取一半的矩阵。
于 2013-02-07T06:08:15.217 回答