
视错觉举例
实验设计一
实验设计二
实验设计三
更新ing
- Matlab Psytoolbox(脑与认知神经科学)
- 前言
- 1.题目
- 2.分析设计要求
- 3.代码
- 总结
前言
脑与认知神经科学Matlab认知科学实验设计
1.题目请设计一个关于正常人脸/面孔与异常人脸/面孔的熟悉程度判断实验(比如倒着的人脸、模糊的人脸、惊恐的人脸等)。
2.分析设计要求创建一个可以显示提示词、图片、结果、反应时间的窗口。
首先准备显示用的人脸图片,将检测是否熟悉的人脸图片事先旋转180度,创建一个窗口用于显示指导语,设计将所有图片随机展现三遍的功能,之后展现倒立的图片,利用按键选择是否见过该图,每选择完一个便提示是否正确以及反应时间。
try
Screen('Preference', 'SkipSyncTests'); %跳过刷新率检测
screens=Screen('Screens');
screenNumber=max(screens); % 第一个屏幕就是0
[w,wsize]=Screen('OpenWindow',screenNumber,[192,192,192],[100,100,1900,1000]);%打开窗口并返回两个重要变量
Screen('Flip',w);%更新当前屏幕
%输出提示内容
Screen('DrawText',w,'实验开始',800,300,[255,0,0])
Screen('DrawText',w,'下面将显示一些人脸照片',660,450,[255,0,0])
Screen('DrawText',w,'请您按下任意键开始实验',660,600,[255,0,0])
Screen('Flip',w);
while 1
[kid,~,kc]=KbCheck;%不断检测是否按键
%kc对应m 70 n 74
if kid==1 %有按键按下时,记录按键信息
break
else
continue
end
end
%存入九张图片信息,可以根据自己的需求增加或减少图片数量
I=cell(8);
for i=1:8
I{i}=imread(strcat(num2str(i),'.jpeg')); %依次读取每一幅图像
end
%让人脸照连续播放
for j=1:3
for i=randperm(8)
P1=Screen('MakeTexture',w,I{i});
Screen('DrawTexture',w,P1,[],[]);%在屏幕中央绘制图片
Screen('Flip',w);
WaitSecs(1)
end
Screen('DrawText',w,'已看完第',620,400,[255,0,0])
Screen('DrawText',w,num2str(j),800,400,[255,0,0])
Screen('DrawText',w,'遍,总共3遍',840,400,[255,0,0])
Screen('Flip',w);%更新当前屏幕
WaitSecs(2)
end
Screen('DrawText',w,'您对他们还有印象吗?',680,300,[255,0,0])
Screen('DrawText',w,'如果您觉得见过他们请按Y,否则按N',550,450,[255,0,0])
Screen('DrawText',w,'请您按下任意键开始实验',650,600,[255,0,0])
Screen('Flip',w);
while 1
[kid,~,kc]=KbCheck;%不断检测是否按键
if kid==1 %有按键按下时,记录按键信息
break
else
continue
end
end
time=cell(4);
P=cell(4);
keyrecord=[];
for i=1:4
P{i}=imread(strcat(num2str(i),'.jpg')); %依次读取每一幅图像
end
for i=1:4
time{i}=GetSecs; %计时开始
P2=Screen('MakeTexture',w,P{i});
Screen('DrawTexture',w,P2,[],[]);%在屏幕中央绘制图片
Screen('Flip',w);
WaitSecs(1)
while 1
[kid,~,kc]=KbCheck;%不断检测是否按键
%kc对应y 89 n 74
if kid==1 %有按键按下时,记录按键信息
break
else
continue
end
end
time{i}=GetSecs-time{i};%计算花费时间
if kc(89)==1 && i==1
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第一幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time{1}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
elseif kc(89)==0 && i==2
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第二幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time{2}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
elseif kc(89)==1 && i==3
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第三幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time{3}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
elseif kc(89)==1 && i==4
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第四幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time{4}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
else
Screen('DrawText',w,'你记错了哦!',800,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
end
end
Screen('CloseAll');%sca;关闭窗口
catch
sca;
end
总结
非常感谢您的观看,已将该内容完整上传,此外本人主页还有python人工智能,单片机等文章,欢迎您观看
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)