如果键入open randperm(至少在Matlab R2010b中),您会看到其p输入的输出M仅为
[~, p] = sort(rand(1,M));
因此,为了向量化N行,
[~, P] = sort(rand(N,M), 2);
因此,生成P并使用线性索引到A:
[~, P] = sort(rand(N,M), 2);
A = A(bsxfun(@plus, (1:N).', (P-1)*N));
示例:给定
N = 3;
M = 4;
A = [ 1 2 3 4
5 6 7 8
9 10 11 12 ];
A =
2 3 1 4
7 5 8 6
9 11 12 10