【发布时间】:2014-10-23 03:27:11
【问题描述】:
在 MATLAB 中,我使用 Shake.m 函数 (http://www.mathworks.com/matlabcentral/fileexchange/10067-shake) 随机打乱每一列。例如:
a = [1 2 3; 4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
b = shake(a)
b =
7 8 6
1 5 9
4 2 3
这个函数完全符合我的要求,但是我的列非常长(>10,000,000),因此运行需要很长时间。有谁知道实现这一目标的更快方法?我试过分别摇动每个列向量,但这并不快。谢谢!
【问题讨论】:
-
看看那个shake-function,它似乎是完全矢量化的,但它在矩阵列上使用排序。 IE。在您的情况下,它对超过 10,000,000 行的列进行排序,这并不奇怪。