필터 지우기
필터 지우기

How to permute a row vector without using perms(), permute() etc.

조회 수: 1 (최근 30일)
Yuval
Yuval 2013년 3월 27일
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

채택된 답변

Matt J
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
Yuval
Yuval 2013년 3월 27일
편집: Yuval 2013년 3월 27일
Is it "legal" that my code changes the original vector?
Matt J
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 CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by