Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % This EXP is to replace green dot with digital '5'.
- % This is the way to make this EXP as a control condition.
- % ��ժ̶��Ǭ�1�ɡA1/5/9�b�e��
- % ��ժ̶��Ǭ�2�ɡA'5'�b�e��
- %�ʧO
- %1���k�͡A2���k��
- %�ܼ� number_is_prestimulus = 1�ɡA�Ʀr�b�e�C�o��
- % 1.0 - Acer2010/12/21_16:09
- %% <�e�m
- clc;clear all;
- addpath('FunctionBox');
- exp_time = datestr(now,'yyyy/mm/dd HH:MM:SS');
- %% ��ƿ�J
- subject_num = input('Subject ID : ');
- gender_index = input('Gender : ');
- switch gender_index
- case 1
- disp('Gender OK!');
- case 2
- disp('Gender OK!');
- otherwise
- error('�S���~�P�H');
- end
- stage_num = input('Stage : ');
- switch stage_num
- case 1
- disp('Stage OK!');
- case 2
- disp('Stage OK!');
- otherwise
- error('�S�����s�b�����q');
- end
- %% �ѼƳ]�m
- screen_lag = 0.01;
- duration_list = [0.3 0.5 0.7];
- % duration_list = [0.01 0.01 0.01];
- digit_list = {'1' '9' '5'};
- rep_time = 20;
- fontsize = 50;
- font_type = 'Arial';
- break_time_trial = 18; %�`�N�@�U
- %% < �Ѽƭp��
- % �p���ժ̹��綶�DzŸ� 14 ��(1) 23�f(0)
- switch rem(subject_num,4)
- case {1,0}
- subject_order = 1;
- case {2,3}
- subject_order = 0;
- end
- % �����ӹ���
- if subject_order == 1
- if stage_num == 1
- number_is_prestimulus = 1;
- else
- number_is_prestimulus = 0;
- end
- else
- if stage_num == 1
- number_is_prestimulus = 0;
- else
- number_is_prestimulus = 1;
- end
- end
- %�p������E�զX
- stimuli_list = [];
- for i = 1:rep_time
- comb = ConditionCombination2(duration_list,digit_list);
- rand_comb = comb(randperm(size(comb,1)),:);
- stimuli_list = [stimuli_list;rand_comb];
- end
- total_block = ceil(size(stimuli_list,1)/break_time_trial);
- %<�M��
- %clear ;
- %�M��>
- %% �Ѽƭp�� >
- try %///////////////////////////////////////////////////////////////// try
- %% < psychtoolbox �ѼƳ]�m
- AssertOpenGL; %�ˬd��Ҫ��T��
- oldVisualDebugLevel = Screen('Preference','VisualDebugLevel',3);
- oldSupressAllWarnings = Screen('Preference','SuppressAllWarnings',1);
- % [windowPtr rect]=Screen('openwindow',0,[0 0 0], [50 50 550 550]);
- [windowPtr rect]=Screen('openwindow',0,[0 0 0]);
- HideCursor;
- xcenter=rect(3)/2;
- ycenter=rect(4)/2;
- Screen('TextSize',windowPtr,fontsize);
- Screen('TextFont',windowPtr,font_type);
- %% psychtoolbox �ѼƳ]�m >
- %=============================================================================================================================����}�l
- for trial = 1:size(stimuli_list,1)
- %% < �𮧵e��
- if rem(trial,break_time_trial) == 1
- Screen('TextSize',windowPtr,16);
- if trial == 1
- [nx, ny, textbounds] = DrawFormattedText(windowPtr,['Formal Stage ' num2str(stage_num) ' !!!\n\n\n' ...
- 'Remains = ' num2str(total_block) ' blocks\n\n' ...
- 'Click space bar to start'],'center','center',[255 255 255]);
- else
- [nx, ny, textbounds] = DrawFormattedText(windowPtr,[...
- 'Remains = ' num2str(total_block) ' blocks\n\n' ...
- 'Click space bar to start'],'center','center',[255 255 255]);
- end
- Screen('flip',windowPtr);
- while 1
- [Kb_temp1 Kb_temp2 Kb_temp3] = KbCheck;
- if Kb_temp3(32) %��space�~��
- break;
- end
- end
- Screen(windowPtr,'FillRect',[0 0 0]);
- Screen('flip',windowPtr);
- WaitSecs(3);
- total_block = total_block - 1;
- Screen('TextSize',windowPtr,fontsize);
- end
- %% �𮧵e�� >
- %% < fix cross 200ms
- Screen('DrawLine',windowPtr,[255 255 255],xcenter-30/2,ycenter+10,xcenter+30/2,ycenter+10,3);
- Screen('DrawLine',windowPtr,[255 255 255],xcenter,ycenter-30/2+10,xcenter,ycenter+30/2+10,3);
- data(trial).fix_cross = Screen(windowPtr,'Flip');
- QuitPsych;
- %<���e
- Screen(windowPtr,'FillRect',[0 0 0]);
- %���e>
- while GetSecs < data(trial).fix_cross + 0.2
- end
- %% fix cross>
- %% < blank 800ms
- data(trial).blank1_time = Screen('flip',windowPtr);
- %<���e
- Screen('TextSize',windowPtr,fontsize);
- if number_is_prestimulus
- DrawFormattedText(windowPtr,stimuli_list{trial,2},'center','center',[200 200 200]);
- else
- DrawFormattedText(windowPtr, '5', 'center','center',[200 200 200]);
- end
- %���e>
- while GetSecs < data(trial).blank1_time + 0.8
- end
- %% blank >
- %% < s1
- data(trial).s1_time = Screen('Flip',windowPtr);
- %<���e
- Screen(windowPtr,'FillRect',[0 0 0]);
- %���e>
- while GetSecs < data(trial).s1_time + stimuli_list{trial,1} - screen_lag
- end
- %% s1>
- %% < blank2 1000ms
- data(trial).blank2_time = Screen('flip',windowPtr);
- %<���e
- % DrawFormattedText(windowPtr,num2str(test_time_list(trial,5)),'center','center',[200 200 200]);
- Screen('TextSize',windowPtr,30);
- [nx, ny, textbounds] = DrawFormattedText(windowPtr,'NOW!','center','center',[200 200 200]);
- Screen('TextSize',windowPtr,fontsize);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% check�@�U
- %���e>
- while GetSecs < data(trial).blank2_time + 1
- end
- %% blank2>
- %% < now
- Kb_temp1 = KbCheck;%�d�ݦ��S�����
- data(trial).text_now = Screen('Flip',windowPtr);
- %<���e
- Screen('TextSize',windowPtr,fontsize);
- if ~number_is_prestimulus
- DrawFormattedText(windowPtr,stimuli_list{trial,2},'center','center',[200 200 200]);
- else
- DrawFormattedText(windowPtr, '5', 'center','center',[200 200 200]);
- end
- %���e>
- %% now>
- %% < keypress
- if Kb_temp1 %�p�G���n���}
- KbWait([],1);
- end
- [data(trial).kb_press key_name_temp]= KbWait;
- %% keypress>
- %% < s2
- data(trial).s2_start = Screen('Flip',windowPtr);
- %<���e
- Screen(windowPtr,'FillRect',[0 0 0]);
- %���e>
- %% < s2
- %% < keyrelease
- data(trial).kb_release = KbWait([],1);
- %% keyrelease>
- %% < blank3 1000ms
- data(trial).blank3_time = Screen('flip',windowPtr);
- WaitSecs(1);
- %% blank3>
- %% <data processing for trial
- data(trial).Date = exp_time;
- data(trial).subject_num = subject_num;
- data(trial).subject_order = subject_order;
- data(trial).gender = gender_index;
- data(trial).stage = stage_num;
- data(trial).number_is_prestimulus = number_is_prestimulus;
- data(trial).trial = trial;
- data(trial).standard_dura = stimuli_list{trial,1};
- data(trial).s1_time_real = data(trial).blank2_time - data(trial).s1_time;
- if number_is_prestimulus
- data(trial).s1 = stimuli_list{trial,2};
- data(trial).s2 = 'dot';
- else
- data(trial).s1 = 'dot';
- data(trial).s2 = stimuli_list{trial,2};
- end
- data(trial).condition = [data(trial).s1 '_' data(trial).s2];
- data(trial).reproduction_time = data(trial).kb_release - data(trial).kb_press;
- data(trial).s2_time_real = data(trial).blank3_time - data(trial).s2_start;
- key_name_temp2 = KbName(key_name_temp);
- if iscell(key_name_temp2)
- key_name_temp2 = key_name_temp2{1};
- end
- data(trial).Key = key_name_temp2; %#ok<AGROW>
- data(trial).RT = data(trial).kb_press - data(trial).text_now;
- %% >
- end
- catch %///////////////////////////////////////////////////////////////// catch
- Screen('CloseAll');
- err = lasterror;
- err.stack
- err.message
- ShowCursor;
- save(['dataError_' num2str(subject_num) '_stage' num2str(stage_num) '.mat']);
- Struct2File(['dataError_' num2str(subject_num) '_stage' num2str(stage_num) '.txt'],data,'\t');
- end %/////////////////////////////////////////////////////////////////// end
- %% block ����s��
- save(['data_' num2str(subject_num) '_stage' num2str(stage_num) '.mat']);
- Struct2File(['data_' num2str(subject_num) '_stage' num2str(stage_num) '.txt'],data,'\t');
- ShowCursor;
- Screen('CloseAll');
- %% ��������s��
- if exist(['data_' num2str(subject_num) '_stage1.mat'],'file');
- if exist(['data_' num2str(subject_num) '_stage2.mat'],'file');
- end_message = msgbox('����ש�F');
- uiwait(end_message);
- if strcmp('Yes',questdlg('�n�Ĥl�A�n�X���ɮ�'));
- clear data;
- load(['data_' num2str(subject_num) '_stage1.mat']);
- data1 = data;
- clear data;
- load(['data_' num2str(subject_num) '_stage2.mat']);
- data2 = data;
- clear data;
- data = [data1 data2];
- save(['data_all_' num2str(subject_num) '.mat'],'data');
- Struct2File(['data_all_' num2str(subject_num) '.txt'],data,'\t');
- end
- end
- end
Add Comment
Please, Sign In to add comment