matlab - 在 MATLAB 中生成随机加权邻接矩阵

标签 matlab random sparse-matrix adjacency-matrix

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

L = diag(sum(A)) - A

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

最佳答案

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

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只提取一半的矩阵。

关于matlab - 在 MATLAB 中生成随机加权邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14684966/

相关文章:

MATLAB:如何从图像中裁剪出一个圆圈

matlab - MATLAB MEX 文件的大小限制

matlab - 我什么时候应该使用 `sparse` ?

python - 如何计算非常大的 scipy 稀疏矩阵之间的点积

python - Scipy稀疏矩阵切片返回IndexError

performance - matlab:用于计算多尺度圆形邻域统计数据的优化代码

matlab - 如何检索局部变量?

java - Java FOR LOOP 如何获取指定随机数的数量

java - 从Java中的 Gamma 分布生成随机值

java - 如何获得具有线性分布的随机日期?