Logfile Psychtoolbox-将信息写入日志文件

Logfile Psychtoolbox-将信息写入日志文件,logfile,psychtoolbox,Logfile,Psychtoolbox,我是编程方面的新手,正在尝试一些我发现的教程来熟悉Psychtoolbox。这个脚本展示了20个试验,其中愤怒或悲伤的脸将出现在屏幕的左侧或右侧(情绪和位置都是随机的)。然后用户按“s”或“a”键进行响应。这运行正常,但问题是将信息写入日志文件。由于某些原因,每当我使用当前代码运行脚本时,程序就会崩溃。任何人能提供的任何帮助都将不胜感激!这是我的密码: %Clear the screen clear all; %Open the on screen window [window, rect

我是编程方面的新手,正在尝试一些我发现的教程来熟悉Psychtoolbox。这个脚本展示了20个试验,其中愤怒或悲伤的脸将出现在屏幕的左侧或右侧(情绪和位置都是随机的)。然后用户按“s”或“a”键进行响应。这运行正常,但问题是将信息写入日志文件。由于某些原因,每当我使用当前代码运行脚本时,程序就会崩溃。任何人能提供的任何帮助都将不胜感激!这是我的密码:

%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');

您收到的崩溃/错误消息是什么?