Tôi có một martix và muốn trộn phần tử của nó.phần tử ma trận trộn trong MATLAB
x=[1 2 5 4 6 ]
sau khi ngẫu nhiên (một cái gì đó như thế này)
x=[2 4 6 5 1]
là matlab có chức năng cho nó? trong php array_shuffle thực hiện việc này.
Tôi có một martix và muốn trộn phần tử của nó.phần tử ma trận trộn trong MATLAB
x=[1 2 5 4 6 ]
sau khi ngẫu nhiên (một cái gì đó như thế này)
x=[2 4 6 5 1]
là matlab có chức năng cho nó? trong php array_shuffle thực hiện việc này.
có được chỉ số xáo trộn sử dụng randperm
idx = randperm(length(x));
chỉ số sử dụng để có được xáo trộn vector
xperm = x(idx);
Là một thay thế để randperm
, bạn cũng có thể sử dụng randsample
fro m hộp công cụ thống kê.
y = randsample(n,k)
trả về mộtk
-by-1
vectory
các giá trị lấy mẫu thống nhất một cách ngẫu nhiên, mà không cần thay thế, từ nguyên1
-n
.
Lưu ý rằng đó là "không thay thế" (theo mặc định). Vì vậy, nếu bạn đặt k
là length(x)
, nó tương đương với việc trộn ngẫu nhiên của vectơ. Ví dụ:
x = 1:5;
randsample(x,length(x))
%ans =
% 4 5 3 1 2
Tôi thích điều này hơn randperm
, vì nó dễ dàng mở rộng cho các mục đích sử dụng khác nhau. Ví dụ: để vẽ 3 phần tử từ x
một cách ngẫu nhiên (như bản vẽ từ một nhóm có các mục hữu hạn), bạn thực hiện randsample(x,3)
. Tương tự như vậy, nếu bạn muốn vẽ 3 số, trong đó bảng chữ cái được tạo thành từ các phần tử của x
, nhưng cho phép lặp lại, bạn thực hiện randsample(x,3,true)
.