How to permute a row vector without using perms(), permute() etc.
조회 수: 1 (최근 30일)
이전 댓글 표시
I would like to permute a row vector, but without using perms(), permute() and so forth. I was wondering whether the following code answers these requirements. I mean, am I somewhat "cheating" by using randi()? I'd also appreciate any comments on the algorithm in general (although I know the function works well).
function Y = ex(X)
Y = zeros(1,length(X));
for i = 1:length(X)
d = randi(length(X));
Y(i) = X(d);
X(d) = [];
end
댓글 수: 0
채택된 답변
Matt J
2013년 3월 27일
편집: Matt J
2013년 3월 27일
It doesn't violate any requirements that you've mentioned, so I'm inclined to say it's legal. Here's another way, if you don't like randi for some reason
n=length(X);
[~,~,e]=qr(sprand(n,n,1/n));
Y=reshape(e*X(:),size(X)),
If the permuted order is supposed to be random, I don't think there's any avoiding the use some sort of random number generator.
댓글 수: 2
Matt J
2013년 3월 27일
Only you and presumably the instructor who assigned this to you can know what is "legal" for you.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Discrete Math에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!