2013-01-17 165 views
5

在Matlab中是否有一种简单的方法来模拟一个随机置换矩阵(比如规模1000乘1000)?我想研究这些矩阵的独立和的特征值分布。随机排列矩阵

在此先感谢!

+1

看看:http://stackoverflow.com/questions/13429144/is-there-a-better-way-to-randomly-generate-a-doubly-stochastic-matrix – Shai

回答

9

您可以生成一个random permutation matrix像这样:

  1. 创建单位矩阵:

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

    对于N这是更好地使用大值sparse matrices

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

    idx = randperm(1:N); 
    
  3. 使用矢量索引相应地重新排列行

    A = A(idx, :); 
    

瞧!

+3

对于大'N'它更好地使用'speye'而不是'eye' ...不需要存储这么多的零... ;-) – Shai

+0

@Shai你为什么删除了你的答案?它没有错! –

+1

一旦'speye'被整合到您的解决方案中,就不需要重复...没有额外的知识存在 – Shai

1

在Matlab中(使用R2012a)idx = randperm(1:N)给出了一个警告,即输入应该是标量。所以:idx = randperm(N);