Shuffle matrix elements
이전 댓글 표시
Hey guys, I want to shuffle a 3x3 matrix (which consist elements within 1:9 unrepeated). So that I have written a very strange code.
>>X=perms(1:9);
Execute above line once.
Then execute below line how many shuffled matrices you want.
>>SMx=reshape(X(randi(size(X,1)),:),3,3)
Is there any better way to do this?
채택된 답변
추가 답변 (2개)
Fangjun Jiang
2011년 11월 3일
I believe it means to be randperm(), not perms().
OrigData=magic(3);
X=randperm(numel(OrigData));
ShuffledData=reshape(OrigData(X),size(OrigData))
댓글 수: 1
Jan
2011년 11월 3일
PERMS is correct: Raviteja produces *all* permutations at first and chooses a specific one afterwards. This needs a lot of memory...
Amgad Mohsen
2012년 8월 9일
A function file as I did with out randperm()
function W = randomize(A)
[m,n] = size(A);
E = A(:);
W(1) = E(1);
E(1) =[];
N = m*n;
while length(E) > 0
K = length(W);
RandInd = randi(length(E),1);
for j = 1: K
P(j) = E(RandInd) ~= W(j);
end
if all(P)
W =[W,E(RandInd)];
E(RandInd) =[];
end
end
W = reshape(W,m,n);
카테고리
도움말 센터 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!