设置左右半屏幕不同闪烁频率的MATLAB代码示例

本文将介绍如何使用MATLAB和Psychtoolbox设置屏幕左右两半以不同的频率闪烁。这在视觉刺激实验中非常有用,例如稳态视觉诱发电位(SSVEP)实验。

代码示例matlab%% 初始化设置PsychDefaultSetup(2);screens = Screen('Screens');screenNumber = max(screens);white = WhiteIndex(screenNumber);black = BlackIndex(screenNumber);[w, rect] = PsychImaging('OpenWindow', screenNumber, black);% 定义实验参数ifi = Screen('GetFlipInterval', w);% 定义实验参数ssvepFrequency1 = 10;ssvepFrequency2 = 7.5; % SSVEP频率(Hz)stimulusDuration = 5; % 刺激持续时间(秒)% 创建文本刺激textSize = 48;textFont = 'Arial';textColor = [255 255 255];% 设置屏幕的左右两半halfWidth = rect(3) / 2;leftHalf = [0 rect(4)/5 rect(3)/4 rect(4)*4/5];rightHalf = [rect(3)*3/4 rect(4)/5 rect(3) rect(4)*4/5];% 设置文本位置(居中)[textX1, textY1] = RectCenter(leftHalf);[textX2, textY2] = RectCenter(rightHalf);textX1 = textX1 - 60;textX2 = textX2 - 60;% 初始化帧计数器frame1 = 1;frame2 = 1;% 显示带文字的闪烁块while frame1 <= (stimulusDuration * ssvepFrequency1) || frame2 <= (stimulusDuration * ssvepFrequency2) Screen('TextSize', w, 100); if frame1 <= (stimulusDuration * ssvepFrequency1) if mod(frame1, 2) == 0 % 左半屏幕,背景白色,文本1 Screen('FillRect', w, [255 255 255], leftHalf); DrawFormattedText(w, 'Yes', textX1, textY1, textColor); else % 左半屏幕,背景黑色,文本1 Screen('FillRect', w, [0 0 0], leftHalf); end frame1 = frame1 + 1; end if frame2 <= (stimulusDuration * ssvepFrequency2) if mod(frame2, 2) == 0 % 右半屏幕,背景黑色,文本2 Screen('FillRect', w, [0 0 0], rightHalf); else % 右半屏幕,背景白色,文本2 Screen('FillRect', w, [255 255 255], rightHalf); DrawFormattedText(w, 'No', textX2, textY2, textColor); end frame2 = frame2 + 1; end Screen('Flip', w); WaitSecs(1 / ifi);end% 关闭屏幕和清理Screen('CloseAll');

代码说明

  • ssvepFrequency1ssvepFrequency2 分别定义了左右半屏幕的闪烁频率(以赫兹为单位)。- stimulusDuration 定义了刺激的持续时间(以秒为单位)。- 代码使用 Screen('FillRect', ...) 函数在每一帧中分别控制左右半屏幕的颜色。- DrawFormattedText 函数用于在屏幕上显示文本。- WaitSecs(1 / ifi) 用于控制刺激的刷新率。

总结

通过修改 ssvepFrequency1ssvepFrequency2 的值,您可以轻松地设置屏幕左右两半的不同闪烁频率。这对于进行SSVEP和其他视觉刺激实验非常有用。

如何设置左右半屏幕不同闪烁频率?- MATLAB代码示例

原文地址: https://www.cveoy.top/t/topic/mu8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录