脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计三

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人工智能,单片机等文章,欢迎您观看

认知神经科学是研究大如何产生以及影响我们的认知和行为的学科。而Psychopy是一种常用于进行心理学和神经科学实验的开源软件。 Psychopy的实验设计主要基于心理物理学的原理,以及认知神经科学的理论模型。使用Psychopy进行实验可以通过观察参与者的反应和测量其电图、功能磁共振成像等生理数据,来揭示我们的认知和行为背后的神经机制。 在使用Psychopy进行实验时,研究者可以使用自定义的刺激材料,如文字、图像、声音等,来呈现给参与者。这些刺激通常会激发参与者的感知、认知和决策过程,并引起相应的部活动。 例如,研究者可以设计一个经典的注意力实验,以探索参与者在面临不同注意任务时的注意分配和注意机制。在实验过程中,参与者可能被要求在一个屏幕上观察移动的箭头,并根据指向的方向进行反应。此时,研究者可以通过记录参与者的反应时间和准确性,以及电图数据来分析他们的注意力分配是否受到不同条件的影响。 通过使用Psychopy进行实验,研究者可以更好地理解认知和行为的神经基础,从而进一步研究部疾病和神经退行性疾病的治疗方法。此外,Psychopy还提供了有关实验数据的统计分析和可视化工具,使研究人员能够更好地解释和呈现他们的研究结果。 总而言之,认知神经科学结合Psychopy实验可以通过对参与者的观察和部反应的测量,揭示大如何影响我们的认知和行为。这有助于我们更好地理解人类的思维和决策过程,并为部疾病的治疗提供新的启示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知何人

万分感谢诸位观看

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值