如果键入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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)