Logfile Psychtoolbox-将信息写入日志文件
我是编程方面的新手,正在尝试一些我发现的教程来熟悉Psychtoolbox。这个脚本展示了20个试验,其中愤怒或悲伤的脸将出现在屏幕的左侧或右侧(情绪和位置都是随机的)。然后用户按“s”或“a”键进行响应。这运行正常,但问题是将信息写入日志文件。由于某些原因,每当我使用当前代码运行脚本时,程序就会崩溃。任何人能提供的任何帮助都将不胜感激!这是我的密码:Logfile Psychtoolbox-将信息写入日志文件,logfile,psychtoolbox,Logfile,Psychtoolbox,我是编程方面的新手,正在尝试一些我发现的教程来熟悉Psychtoolbox。这个脚本展示了20个试验,其中愤怒或悲伤的脸将出现在屏幕的左侧或右侧(情绪和位置都是随机的)。然后用户按“s”或“a”键进行响应。这运行正常,但问题是将信息写入日志文件。由于某些原因,每当我使用当前代码运行脚本时,程序就会崩溃。任何人能提供的任何帮助都将不胜感激!这是我的密码: %Clear the screen clear all; %Open the on screen window [window, rect
%Clear the screen
clear all;
%Open the on screen window
[window, rect] = Screen('OpenWindow', 0);
%Find the center of the screen
[xCenter, yCenter] = RectCenter(rect);
%Create sad picture textures
sadFaceData = imread('sadface.jpg');
[imageHeight, imageWidth, colorChannels] = size(sadFaceData);
sadFaceTexture = Screen('MakeTexture', window, sadFaceData);
%Create angry face textures
angryFaceData = imread('angryface.jpg');
[imageHeight, imageWidth, colorChannels] = size(angryFaceData);
angryFaceTexture = Screen('MakeTexture', window, angryFaceData);
%Define coordinates of the images
distanceFromCenter = 100;
leftRect = [xCenter-distanceFromCenter-imageWidth, yCenter-imageHeight/2, xCenter-distanceFromCenter, yCenter+imageHeight/2];
rightRect= [xCenter+distanceFromCenter, yCenter-imageHeight/2, xCenter+distanceFromCenter+imageWidth, yCenter+imageHeight/2];
%Set up responses
sad = KbName('s');
angry = KbName('a');
%Get the number of total trials and sad face trials
nTrials = 0;
correct = 0;
totalcorrect = 0;
%Loop for the number of trials
while nTrials < 20
%Random number of 1 or 2
randomFaceNum = randi(2);
randomRectNum = randi(2);
%Loop determining face and location
if randomFaceNum == 1 && randomRectNum == 1
Screen('DrawTexture', window, sadFaceTexture, [], leftRect);
elseif randomFaceNum == 1 && randomRectNum == 2
Screen('DrawTexture', window, sadFaceTexture, [], rightRect);
elseif randomFaceNum == 2 && randomRectNum == 1
Screen('DrawTexture', window, angryFaceTexture, [], leftRect);
else
Screen('DrawTexture', window, angryFaceTexture, [], rightRect);
end
[stimOnset] = Screen('Flip', window);
%Wait for the key press
[secs, keyCode] = KbStrokeWait;
response=KbName(keyCode);
responseTime = secs - stimOnset;
%Determine if the response was correct
if randomFaceNum == 1
if response == 's'
correct = 1;
end
else
if response == 'a'
correct = 1;
end
end
totalcorrect = totalcorrect + correct;
%Set up logfile where data will print to
fileName=strcat(subjectCode,'_log.txt');
FID=fopen(fileName, 'a');
fprintf(FID,'%d %d %d %s %.0f %d\n', nTrials, randomFaceNum, randomRectNum,response, responseTime, correct);
fclose(FID);
nTrials = nTrials + 1;
end
Screen('Close', window);
%清除屏幕
清除所有;
%打开屏幕上的窗口
[window,rect]=屏幕('OpenWindow',0);
%找到屏幕的中心
[xCenter,yCenter]=RectCenter(rect);
%创建悲伤的图片纹理
sadFaceData=imread('sadface.jpg');
[imageHeight、imageWidth、ColorChannel]=大小(sadFaceData);
sadFaceTexture=屏幕('MakeTexture',窗口,sadFaceData);
%创建愤怒的脸纹理
angryFaceData=imread('angryface.jpg');
[imageHeight、imageWidth、ColorChannel]=大小(angryFaceData);
angryFaceTexture=屏幕('MakeTexture',窗口,angryFaceData);
%定义图像的坐标
距离中心=100;
leftRect=[xCenter distanceFromCenter imageWidth,cCenter imageHeight/2,xCenter distanceFromCenter,cCenter+imageHeight/2];
rightRect=[xCenter+distanceFromCenter,cCenter-imageHeight/2,xCenter+distanceFromCenter+imageWidth,cCenter+imageHeight/2];
%设置响应
sad=KbName('s');
生气=KbName('a');
%获取总试用次数和悲伤表情试用次数
nTrials=0;
正确=0;
totalcorrect=0;
%循环测试次数
而NTRIAL<20
%1或2的随机数
randomFaceNum=randi(2);
randomRectNum=randi(2);
%确定面和位置的回路
如果randomFaceNum==1&&randomRectNum==1
屏幕('DrawTexture',窗口,sadFaceTexture,[],leftRect);
elseif randomFaceNum==1&&randomRectNum==2
屏幕('DrawTexture',窗口,sadFaceTexture,[],右矩形);
elseif randomFaceNum==2&&randomRectNum==1
屏幕(“DrawTexture”、窗口、angryFaceTexture、[]和leftRect);
其他的
屏幕(“DrawTexture”,窗口,angryFaceTexture,[],右矩形);
结束
[StimStart]=屏幕(“翻转”,窗口);
%等待按键
[secs,keyCode]=KbStrokeWait;
响应=KbName(键码);
响应时间=秒-刺激开始;
%确定响应是否正确
如果randomFaceNum==1
如果响应=='s'
正确=1;
结束
其他的
如果响应=='a'
正确=1;
结束
结束
totalcorrect=totalcorrect+正确;
%设置将数据打印到的日志文件
fileName=strcat(主题代码“u log.txt”);
FID=fopen(文件名“a”);
fprintf(FID,'%d%d%d%s%.0f%d\n',nTrials,randomFaceNum,randomRectNum,response,responseTime,correct);
fclose(FID);
nTrials=nTrials+1;
结束
屏幕(“关闭”,窗口);
您发布的代码的问题是,以下行使用字符串变量“subjectCode”写入日志文件名,但尚未定义此变量:
fileName=strcat(subjectCode,'_log.txt');
例如,您可以添加
subjectCode = '1';
在打电话之前的任何地方
fileName=strcat(subjectCode,'_log.txt');
您收到的崩溃/错误消息是什么?