2012-11-06 13 views

Odpowiedz

21
  1. uzyskać tasuje wskaźniki wykorzystujące randperm

    idx = randperm(length(x)); 
    
  2. indeksów użyć, aby uzyskać tasuje Vector,

    xperm = x(idx);

3

Jako alternatywny do randperm, można również użyć randsample fro m zestaw narzędzi statystycznych.

y = randsample(n,k) zwraca k -by- 1 wektor y wartości próbą równomiernie losowo, bez zastąpienia, z całkowitymi 1 do n.

Należy pamiętać, że jest to "bez wymiany" (domyślnie). Jeśli więc ustawisz k jako length(x), będzie to równoznaczne z losowym przetasowaniem wektora. Na przykład:

x = 1:5; 
randsample(x,length(x)) 
%ans = 
%  4  5  3  1  2 

Lubię to więcej niż randperm, ponieważ jest łatwo rozszerzalny do różnych zastosowań. Na przykład, aby losowo narysować 3 elementy z x (np. Rysunek z kubełka z elementami skończonymi), wykonujesz randsample(x,3). Podobnie, jeśli chcesz narysować 3 cyfry, gdzie alfabet składa się z elementów x, ale pozwalają na powtórzenia, robisz randsample(x,3,true).