2013-01-17 164 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);