【问题标题】:Random permutation matrix随机置换矩阵
【发布时间】:2013-01-17 14:54:49
【问题描述】:

是否有一种简单的方法可以在 Matlab 中模拟随机排列矩阵(例如大小为 1000 乘 1000)?我想研究这些矩阵的独立和的特征值分布。

提前致谢!

【问题讨论】:

标签: matlab permutation


【解决方案1】:

您可以像这样生成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, :);
    

瞧!

【讨论】:

  • 对于大的N,最好使用speye 而不是eye...不需要存储这么多零... ;-)
  • @Shai 你为什么删除你的答案?没有错!
  • 一旦speye 被集成到您的解决方案中,就不需要重复了......那里没有额外的知识
  • @Shai 谢谢!...我猜 :)
【解决方案2】:

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

【讨论】: