how to split a vector based on value rank?
조회 수: 1 (최근 30일)
이전 댓글 표시
y = rand(1000,1); % generate a random vector
[a b]=size(y) % a is length
[yrank,index] = sort(y) % sort small to large
t1= 500;
t2=250;
t2=250;
I want to make three vectors , Vector 1 = includs as many element as t1 (e.g. 500) Vector 2= includes as many element as t2 (e.g.250) Vector 3= includes as many elements as t3 (e.g.250)
How we give these elements to each vector ? I want to give the elements with greatest and lowest value to Vector 1 then element with greatest value (but lower than the one given to Vector 1) and element with lowest value ( but greater that that given to vector 1) placed in Vector 2 then the same for vector 3. It contineous until all the elemenst are placed in the three vectors
답변 (1개)
Walter Roberson
2014년 2월 6일
shidx = [index(1:end/2), index(end:-1:end/2+1)];
vector1 = reshape(shidx(1:2:end, :).', [], 1);
vector2 = shidx(2:2:end, 1);
vector3 = shidx(2:2:end, 2);
참고 항목
카테고리
Help Center 및 File Exchange에서 Random Number Generation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!