Code covered by the BSD License

### Highlights from SHAKE

4.25
4.2 | 4 ratings Rate this file 4 Downloads (last 30 days) File Size: 2.11 KB File ID: #10067 Version: 1.0

# SHAKE

### Jos (10584) (view profile)

20 Feb 2006 (Updated )

Randomize a matrix along one dimension (ver 4 .1 may 2008)

File Information
Description

SHAKE - Randomize a matrix along a specific dimension

Y = SHAKE(X) randomizes the order of the elements in each column of the 2D matrix. For N-D matrices it randomizes along the first dimension.

SHAKE(X,DIM) randomizes along the dimension DIM.

[Y, I, J] = SHAKE(...) return index matrices I and J so that Y = X(I) and X = Y(J).

Example:
A = [1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12] ; % see <slm> on the FEX ...
Dim = 2 ;
[B, ID] = shake(A,Dim) % ->, e.g.
% 3 2 1
% 6 4 5
% 7 8 9
% 11 10 12%

and RANDSWAP on the File Exchange

Acknowledgements

This file inspired Randswap, Permute A Grouped Vector, and Randone1.

MATLAB release MATLAB 6.5 (R13)
29 Aug 2014 J G

### J G (view profile)

Thanks, this is just what I needed. However I'm finding it to be quite slow. I have ~10000 rows and 5 columns, and I am randomising by column (Dim = 1). Do you have any suggestions as to how to speed this up? Is doing each column vector separately faster?

12 Oct 2006 Jos (author)

New version: 3.0 (oct 2006)

Comment only
01 Jun 2006 Gregory Anderson

Simple? Yes, but I couldn't figure out how to do it on my own, and it does exactly what it's supposed to do, so thanks, Jos.

06 May 2006 Jos vdG

Which tests? Note that <shake> simply uses the built-in matlab <rand> function ...

Comment only
01 Apr 2006 Peter He

Tests show that the quality of randomization is not good. Cannot be trusted in serious simulations.

21 Feb 2006 John D'Errico

Its not shaky at all. Certainly not its documentation, which is as clear as even I could ask for.

24 Aug 2006

SHAKE can now randomize along any dimension.

12 Oct 2006

new algorithm
return 2 indices

13 Dec 2006

dec 2006 - fixed major bug in functionality