被试内设计:自变量1(阶段:辨别学习阶段/反转阶段)*自变量2(框架:积极/消极)*自变量3(反馈程度:部分反馈/完全反馈) •总共有4组两两成对出现的图片,组合1为积极框架下完全反馈的刺激,组合2是积极框架下部分反馈的刺激,组合3是消极框架下完全反馈的刺激,组合4是消极框架下部分反馈的刺激,电脑会一左一右的呈现图片刺激,被试按“F”键代表选择左边,按“J”键代表选择右边。第一个Run为辨别学习阶段,选择pos_1和pos_3是高奖赏概率,选择neg_1和neg_3是高惩罚概率。第二个Run为反转阶段,选择pos_1和pos_3是低奖赏概率,选择neg_1和neg_3是低惩罚概率。且每种组合中的两张图片收入或损失情况是独立的,如一个trial中pos_1收入+10并不代表pos_2就一定+0。 %% This is a main function to call other functions %% step01: collect information of participants name=inputdlg('请输入姓名','被试姓名',[1 60],{'abc'}); ID=inputdlg('请输入编号','被试id',[1 60],{'101'}); gender=inputdlg('请输入性别,男1,女2','被试性别',[1 60],{'2'}); ID=str2num(char(ID)); gender=str2num(char(gender)); %% step02: creat a main window [wname,HC,VC,slack]=creat_mainwindow; %% step03: to get initial parameters [stim_w,exp_seq,RT,ACC,tn,stim_dur,j_dur]=predata(wname); %% step04: present instructions getready(startK,HC,VC,wname); %% step05: present stimuli t=GetSecs;%获取当前时刻 end %% step 06: save data to the disk abc=fix(clock); path=pwd; if gender==1 fidraw=fopen([path '\Data\stroop_' char(name) '_' num2str(ID) '_' num2str(abc(4)) '_' num2str(abc(5)) '_Male.txt'],'a'); elseif gender==2 fidraw=fopen([path '\Data\stroop_' char(name) '_' num2str(ID) '_' num2str(abc(4)) '_' num2str(abc(5)) '_Female.txt'],'a'); end fprintf(fidraw,'Date \t Name \t ID \t Gender \t Trial \t condition \t stim_id \t RT \t ACC \t ITI \t \n'); collect_data(name,ID,gender,RT,ACC,exp_seq,tn,j_dur,fidraw); %% step07: close window Screen('CloseAll'); sca fclose('all'); 根据题目,修改以上的主函数编码以及补充step05主函数的编码,Matlab
时间: 2024-01-01 22:04:07 浏览: 28
根据题目,修改以上的主函数编码以及补充step05主函数的编码,具体如下:
主函数代码:
```matlab
%% step01: collect information of participants
name=inputdlg('请输入姓名','被试姓名',[1 60],{'abc'});
ID=inputdlg('请输入编号','被试id',[1 60],{'101'});
gender=inputdlg('请输入性别,男1,女2','被试性别',[1 60],{'2'});
ID=str2num(char(ID));
gender=str2num(char(gender));
%% step02: create a main window
[wname,HC,VC,slack]=creat_mainwindow;
%% step03: to get initial parameters
[stim_w,exp_seq,RT,ACC,tn,stim_dur,j_dur]=predata(wname);
%% step04: present instructions
getready(startK,HC,VC,wname);
%% step05: present stimuli
for i=1:length(exp_seq) %遍历所有trial
%获取当前时刻
t=GetSecs();
%显示刺激图片
Screen('DrawTexture',wname,stim_w(exp_seq(i),1),[],[HC-250 VC-250 HC+250 VC+250]);
Screen('DrawTexture',wname,stim_w(exp_seq(i),2),[],[HC+250 VC-250 HC+750 VC+250]);
Screen('Flip',wname,t+stim_dur);
%记录反应时间
[keyPress,secs, keyCode] = KbCheck;
while(1)
if keyCode(KbName('f')) || keyCode(KbName('j'))
RT(i)=GetSecs-t;
break;
end
[keyPress,secs, keyCode] = KbCheck;
end
%记录反应准确性
if ((exp_seq(i)==1 || exp_seq(i)==3) && keyCode(KbName('f'))) || ((exp_seq(i)==2 || exp_seq(i)==4) && keyCode(KbName('j')))
ACC(i)=1;
else
ACC(i)=0;
end
%显示间隔
Screen('Flip',wname,secs+j_dur);
end
%% step 06: save data to the disk
abc=fix(clock);
path=pwd;
if gender==1
fidraw=fopen([path '\Data\stroop_' char(name) '_' num2str(ID) '_' num2str(abc(4)) '_' num2str(abc(5)) '_Male.txt'],'a');
elseif gender==2
fidraw=fopen([path '\Data\stroop_' char(name) '_' num2str(ID) '_' num2str(abc(4)) '_' num2str(abc(5)) '_Female.txt'],'a');
end
fprintf(fidraw,'Date \t Name \t ID \t Gender \t Trial \t condition \t stim_id \t RT \t ACC \t ITI \t \n');
collect_data(name,ID,gender,RT,ACC,exp_seq,tn,j_dur,fidraw);
%% step07: close window
Screen('CloseAll');
sca
fclose('all');
```
step05主函数代码:
```matlab
% step05: present stimuli
for i=1:length(exp_seq) %遍历所有trial
%获取当前时刻
t=GetSecs();
%显示刺激图片
Screen('DrawTexture',wname,stim_w(exp_seq(i),1),[],[HC-250 VC-250 HC+250 VC+250]);
Screen('DrawTexture',wname,stim_w(exp_seq(i),2),[],[HC+250 VC-250 HC+750 VC+250]);
Screen('Flip',wname,t+stim_dur);
%记录反应时间
[keyPress,secs, keyCode] = KbCheck;
while(1)
if keyCode(KbName('f')) || keyCode(KbName('j'))
RT(i)=GetSecs-t;
break;
end
[keyPress,secs, keyCode] = KbCheck;
end
%记录反应准确性
if ((exp_seq(i)==1 || exp_seq(i)==3) && keyCode(KbName('f'))) || ((exp_seq(i)==2 || exp_seq(i)==4) && keyCode(KbName('j')))
ACC(i)=1;
else
ACC(i)=0;
end
%显示间隔
Screen('Flip',wname,secs+j_dur);
end
```