Matlab 如何创建对称零和一矩阵
我需要创建一个100*100对称矩阵,该矩阵具有0和1的随机分布,但对角线应为全零,我如何才能做到这一点?这是一种方法:Matlab 如何创建对称零和一矩阵,matlab,matrix,Matlab,Matrix,我需要创建一个100*100对称矩阵,该矩阵具有0和1的随机分布,但对角线应为全零,我如何才能做到这一点?这是一种方法: 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 您可以使用均匀分布生成随机数: n =
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
您可以使用均匀分布生成随机数:
n = 100;
a = round(rand(n,n));
现在将对角线条目设置为零():
对称分量:
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的建议,在计算矩阵的对称分量时添加了行,并消除了将对角线上的条目归零的循环注意,当前版本返回的矩阵是不对称的。此外,可以避免循环:
a(1:(n+1):end)=0
@randomatlabuser,是的,谢谢你在这方面的说明,我忘记了对称性要求。我编辑了我的答案以包含该内容。@roybatty,谢谢,如果您愿意,您也可以删除答案中的循环。@randomatlabuser,谢谢您对循环的建议(请参阅编辑),继续努力!
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