随机排列矩阵

7
有没有一种简单的方法在Matlab中模拟一个随机置换矩阵(比如1000乘1000的大小)?我想研究这些矩阵的独立和的特征值分布。谢谢!

1
请查看以下链接:https://dev59.com/8WrXa4cB1Zd3GeqPEvgX - Shai
2个回答

11

您可以这样生成一个随机排列矩阵

  1. 创建单位矩阵:

  2. A = eye( N );  %// N is the size of your matrix
    

    对于较大的 N 值,最好使用稀疏矩阵

    A = speye( N ); % create sparse identity matrix
    
  3. 生成一个随机排列:

    idx = randperm(1:N);
    
  4. 使用向量索引对行进行重新排列

  5. A = A(idx, :);
    

看这里!


3
N 很大时,最好使用 speye 而不是 eye... 没有必要存储那么多的零... ;-) - Shai
@Shai,你为什么把你的答案删除了?它没有任何问题! - Eitan T
1
一旦speye被整合到您的解决方案中,就不需要复制...那里不存在额外的知识。 - Shai

1
在Matlab中(使用R2012a版本),idx = randperm(1:N)会给出一个警告,提示输入应该是标量。因此:idx = randperm(N);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接