如何创建对称的零和一个矩阵

时间:2013-11-26 04:45:39

标签: matlab matrix

我需要创建一个100 * 100对称矩阵,其随机分布为0和1,但对角线应该全为零,我该怎么做?

2 个答案:

答案 0 :(得分:3)

这是一种方法:

N = 100; % size of square matrix
p = 0.5; % probability of 0s
A = triu(rand(N)>p, 1); % matrix of 0s and 1s (upper triangular part)
A = A + A'; % now it is symmetric

答案 1 :(得分:2)

您可以使用统一分布生成随机数:

n = 100;
a = round(rand(n,n));

现在将对角线条目设置为零(as discussed here by Jonas):

a(logical(eye(size(a)))) = 0;

对称组件:

aSym = floor((a + a')/2);

n = 5的例子:

aSym =

     0     0     0     0     0
     0     0     1     0     1
     0     1     0     0     1
     0     0     0     0     0
     0     1     1     0     0

编辑:在randomatlabuser的建议中,添加了一行来计算矩阵的对称分量并消除了循环以使对角线上的条目归零