2016-12-01 19 views
0

3 개의 1x56 구조체 - 블록 (블록 1, 블록 2, 블록 3)이 있습니다. 문제가 아닌 모든 블록을 포함하는 하나의 큰 구조 (실험)를 만들어야합니다 (exp = [block1 block2 block3]). 문제는 각 블록의 콘텐츠를 다른 블록의 콘텐츠와 혼합하지 않고 실험 내에서 블록을 셔플하는 방법입니다.구조 내의 셔플 링 구조

예를 들어

:

block1(1).block = '1'  
block1(2).block = '1'  
block1(3).block = '1'  

block2(1).block = '2'  
block2(2).block = '2'  
block2(3).block = '2'  

block3(1).block = '3' 
block3(2).block = '3' 
block3(3).block = '3' 

내가 등등 111333222 또는 333222111 또는 222333111과를 원하지만 결코 132,123,112 등

나는 그것이 매우 분명하지 않다 미안 해요, 난 매트랩 아주 새로운 해요. 아이디어와 도움에 감사드립니다. 만약 내가 제대로 이해하고

답변

1

, 당신은이 방법을 수행 할 수 있습니다

blocks = {block1 block2 block3}; % Collect all blocks in cell array 
ind = randperm(numel(blocks)); % Index of random permutation 
shuffled_blocks = [blocks{ind}]; % Apply permutation and merge into one struct array 
0

사용하고있는 현재의 구조는 매우 복잡하다. block1(1).blockblock1 (PsychToolbox 태그로 인해 블록 내에서 시행 중이라고 가정)의 첫 번째 평가판을 나타 내기를 원합니다. 모든 블록의 배열을 포함하는 단일 구조를 제안합니다. 마찬가지로, 각 블록은 해당 블록 내의 모든 시도의 배열을 보유합니다. 각 시험은 해당 블록의 해당 하위 집합과 관련된 정보를 보유합니다.

blocks(1).trials{1} = '1'; 
blocks(1).trials{2} = '1'; 
blocks(1).trials{3} = '1'; 

blocks(2).trials{1} = '2'; 
blocks(2).trials{2} = '2'; 
blocks(2).trials{3} = '2'; 

blocks(3).trials{1} = '3'; 
blocks(3).trials{2} = '3'; 
blocks(3).trials{3} = '3'; 

for blk_ind = randperm(numel(blocks)) 
    trials = block(blk_ind); 
    % when blk_ind == 1, trials is {'1','1','1'} 
end