create subarray from an given array
조회 수: 5 (최근 30일)
이전 댓글 표시
To create few no. of arrays from a given long array, eg. given = [1 2 3 4 5 6 7 8 9 ....]
to create randomly [3 4 9] [1 5 8] [2 6 7] ... if size of group is given between 3 and 3 (between two nos.) by user
or [2 6 9 5] [1 3 4 7 8] etc.. if the size of group is between 4 and 5 given by user (may vary and no of group can also vary) also no number should repeat again, and should be present in array given earlier
댓글 수: 0
답변 (2개)
Azzi Abdelmalek
2014년 3월 21일
편집: Azzi Abdelmalek
2014년 3월 21일
EDIT
a=[1 2 3 4 5 6 7 8 9]
n=numel(a)
% find divisor of a
c=1:n
d = c(rem(n,c)==0)
% number of groupes
ng=d(randi(numel(d),1))
%------Length of group------------------
lg=n/ng
%-------------Result---------------------
s=randperm(n);
out=num2cell(reshape(a(s),ng,lg),2)
댓글 수: 6
Jos (10584)
2014년 3월 21일
This problem is somewhat ill-defined. If there are multiple group sizes allowed, should all group sizes be present an equal amount of times? And things might not fit, for instance, when the number of elements in A is odd, and the AllowGroupSize is even …
Here is a suggestion:
A = 1:21
AllowedGroupSize = [3 4]
GroupSizes = repmat(AllowedGroupSize,1, numel(A) ./ sum(AllowedGroupSize))
C = mat2cell(A(randperm(numel(A))),1,GroupSizes)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!