脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计三
MATLAB 认知
2023-09-11 14:19:58 时间
Matlab Psytoolbox(脑与认知神经科学)
前言
脑与认知神经科学Matlab认知科学实验设计
1.题目
请设计一个关于正常人脸/面孔与异常人脸/面孔的熟悉程度判断实验(比如倒着的人脸、模糊的人脸、惊恐的人脸等)。
2.分析设计要求
创建一个可以显示提示词、图片、结果、反应时间的窗口。
首先准备显示用的人脸图片,将检测是否熟悉的人脸图片事先旋转180度,创建一个窗口用于显示指导语,设计将所有图片随机展现三遍的功能,之后展现倒立的图片,利用按键选择是否见过该图,每选择完一个便提示是否正确以及反应时间。
3.代码
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);%更新当前屏幕n
%输出提示内容
Screen('DrawText',w,'第一次实验(共两次实验)',660,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
%存入九张图片信息,可以根据自己的需求增加或减少图片数量
K=cell(8);
for i=1:8
K{i}=imread(strcat(num2str(i),'2.jpeg')); %依次读取每一幅图像
end
%让人脸照连续播放
for j=1:3
for i=randperm(8)
P3=Screen('MakeTexture',w,K{i});
Screen('DrawTexture',w,P3,[],[]);%在屏幕中央绘制图片
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
time2=cell(4);
L=cell(4);
keyrecord2=[];
for i=1:4
L{i}=imread(strcat(num2str(i),'2.jpg')); %依次读取每一幅图像
end
num2=0;
for i=1:4
time2{i}=GetSecs; %计时开始
P3=Screen('MakeTexture',w,L{i});
Screen('DrawTexture',w,P3,[],[]);%在屏幕中央绘制图片
Screen('Flip',w);
WaitSecs(1)
while 1
[kid,~,kc]=KbCheck;%不断检测是否按键
%kc对应y 89 n 74
if kid==1 %有按键按下时,记录按键信息
break
else
continue
end
end
time2{i}=GetSecs-time2{i};%计算花费时间
if kc(89)==1 && i==1
num2=num2+1;
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第一幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time2{1}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
elseif kc(89)==1 && i==2
num2=num2+1;
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第二幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time2{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
num2=num2+1;
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第三幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time2{3}),1000,450,[255,0,0])
Screen('DrawText',w,'秒',1200,450,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
elseif kc(89)==0 && i==4
num2=num2+1;
Screen('DrawText',w,'你记对了,真厉害!',700,300,[255,0,0])
Screen('DrawText',w,'第四幅图反应时间为',580,450,[255,0,0])
Screen('DrawText',w,num2str(time2{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('DrawText',w,'第二次实验(共两次实验)',660,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
M=cell(8);
for i=1:8
M{i}=imread(strcat(num2str(i),'1.jpeg')); %依次读取每一幅图像
end
%让人脸照连续播放
for j=1:3
for i=randperm(8)
P0=Screen('MakeTexture',w,M{i});
Screen('DrawTexture',w,P0,[],[]);%在屏幕中央绘制图片
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);
H=cell(4);
keyrecord1=[];
for i=1:4
H{i}=imread(strcat(num2str(i),'1.jpg')); %依次读取每一幅图像
end
num1=0;
for i=1:4
time{i}=GetSecs; %计时开始
P2=Screen('MakeTexture',w,H{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
num1=num1+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
num1=num1+1;
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
num1=num1+1;
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
num1=num1+1;
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('DrawText',w,'您第一次实验选择正确个数为',500,400,[255,0,0])
Screen('DrawText',w,num2str(num2)',1100,400,[255,0,0])
Screen('DrawText',w,'个',1150,400,[255,0,0])
Screen('DrawText',w,'您第二次实验选择正确个数为',500,500,[255,0,0])
Screen('DrawText',w,num2str(num1)',1100,500,[255,0,0])
Screen('DrawText',w,'个',1150,500,[255,0,0])
Screen('Flip',w);
WaitSecs(2)
Screen('CloseAll');%sca;关闭窗口
catch
sca;
end
总结
非常感谢您的观看,已将该内容完整上传,此外本人主页还有python人工智能,单片机等文章,欢迎您观看
相关文章
- Matlab中strlength函数的使用
- 通过matlab和simulink实现BSC二进制对称信道的仿真
- 【MATLAB教程案例98】基于混沌序列的图像加解密matlab仿真,并进行各类攻击测试
- 【MATLAB教程案例64】深度学习网络建模1,通过matlab编程实现
- 【MATLAB教程案例60】使用matlab实现基于GRU网络的数据分类预测功能与仿真分析
- 【MATLAB教程案例47】基于双目相机拍摄图像的三维重建matlab仿真
- 【MATLAB教程案例38】语音信号的去噪方法matlab仿真学习——LMS自适应滤波,谱减法去噪滤波及维纳滤波等
- 【MATLAB教程案例35】指纹识别系统中图像处理环节相关理论学习和MATLAB仿真实现——图像二值化、锐化、细化、特征提取、伪特征去除等综合应用学习
- 【MATLAB教程案例11~20总结】优化类算法matlab仿真经验和技巧总结
- 【MATLAB教程案例5】常见无线通信信道的matlab模拟和仿真分析——自由空间损耗模型,Okumura-Hata模型以及COST231 Hata模型
- 基于BP/GRNN神经网络的安全性数据预测matlab仿真
- 【CUDA7.5】MATLAB中配置Win7+Matlab R2015b+CUDA7.5+vs2013配置方法
- 基于MATLAB的COST231-WI模型的理论与仿真分析
- 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——2.2 MATLAB图像类型及其存储方式
- 【Matlab 六自由度机器人】关于机器人运动学反解的有关问题
- 【Matlab算法】粒子群算法求解二维线性优化问题(附MATLAB代码)
- 脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计一
- MATLAB 小饼干圈叉棋