1

我需要制作一个计时器,在多阶段延迟任务开始时开始计数,并在经过一定时间后结束延迟任务,继续进行下一部分实验。现在,我想在 2 秒后结束任务。

在下面的代码中,我包含了一个可以粘贴到编辑器中的示例。我为这个延迟任务使用了 Stroop 任务的一部分,该任务由一个阶段组成(在我的实际代码中有 3 个阶段,但我为这个问题简化了任务)——按 1 键为红色,按 2 键为绿色,以及蓝色的 3 键。每个阶段目前进行六次试验。(目前我的一个阶段只有一组 6 次试验)。

我希望任务本身(所有阶段一起)持续一段时间,然后在我设置的时间终止,无论试用号如何。因此,如果 2 秒过去了,任务应该结束,即使我们只处于第 1 阶段,第 3 次试验(共 6 次)。

下面被注释掉的代码(带有 NumSecondsStart 和 NumSecondsEnd 的循环)是我目前的尝试。我不确定这样的循环会去哪里(围绕循环阶段,围绕试验循环?)谢谢!

代码:

clear all

close all

KbName('UnifyKeyNames');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[window, rect]=Screen('OpenWindow',0);

RED=KbName('1'); GREEN=KbName('2'); BLUE=KbName('3');

    keysOfInterest=zeros(1,256);
    keysOfInterest([RED, GREEN, BLUE])=1;
    KbQueueCreate(-1, keysOfInterest);
    KbQueueStart; 

WORDCOLORS = {'red', 'green', 'blue'};

rgbColors = [1000 0 0; 0 1000 0; 0 0 1000];

starttime=Screen('Flip',window);

KbQueueFlush;

% NumSecondsStart = GetSecs;

% while (NumSecondsEnd-NumSecondsStart) == 1

for phase = 1

    design=repmat([1 2 3], 2, 2)';

    if phase == 1

        designRand=design(randperm(length(design)),:);

        Word=WORDCOLORS(designRand(1:6));

        Color=rgbColors(designRand(:,2),:);

    end

    for trial=1:6

        if phase == 1

        DrawFormattedText(window, Word{trial},  'center'  ,'center', Color(trial,:));

         WaitSecs(rand+.5) 

        starttime=Screen('Flip',window); 

        [pressed, firstPress]=KbQueueCheck; 

        endtime=KbQueueWait();  

        RTtext=sprintf('Response Time =%1.2f secs',endtime-starttime); 

        DrawFormattedText(window,RTtext,'center'  ,'center',[255 0 255]); 

        vbl=Screen('Flip',window); 

        Screen('Flip',window,vbl+1); 

        NumSecondsEnd =GetSecs;

        end
    end
end

%                 break;

% end

ListenChar(0); 

ShowCursor(); 
Screen('CloseAll'); 
4

1 回答 1

0

我想tic并且toc会在这里成为你的朋友...

我也不会使用while以下内容:(假设已经开始的迭代将被允许完成)

添加tic;您希望计时开始的位置,而不是在循环内,否则它将在每次迭代时重置计时器。

在循环中添加以下内容for,无论是在开头还是结尾

if toc >= 2
    break
end

这将在第一次达到此值并且经过 2 秒或更长时间时break退出循环for

于 2014-04-07T14:51:32.800 回答