from Labial thermistor and potentiometer processing by Nicole Prause
Labial temperature and self-reported sexual arousal for films processed

TempLev.m
%function Processed = templev(signals)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This function averages lever data into time bins as requested by user
%
% Input:    Matrix with subjects (or condition/subject) on rows
%           Sampling rate (Hz) manually
%           Desired bins of time (s) manually
% Output:   .dat file with average values per bin per row
%
% Author: Nicole Prause 3.2.09
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

cnt_folder = char([{'D:\Study_Verena\Raw_Data\'}]);
ImportToSPSS=char([{'D:\Study_Verena\Raw_Data\ImportToSPSS.dat'}]);
SubjectNumbers=char([{'D:\Study_Verena\Raw_Data\SubjectNumbers.dat'}]);
FileList = char('D:\Study_Verena\Raw_Data\');
%format short G
Bin = 5; %Time length of bins requested (in s)
SRate = 1000; %Sampling rate
dlmwrite(ImportToSPSS,'');
dlmwrite(SubjectNumbers,'');
filename_lst = dir(fullfile(FileList, '*.cnt'));

for q=1:length(filename_lst)
    filename = char(filename_lst(q).name);
    fprintf ('Running file %s', filename_lst(q).name);
    filename=strcat(cnt_folder,filename);
    signals=loadcnt(filename,'dataformat','int32');
    data=signals.data;
    data=data(1:2,:);
    
    ProcessingFile=char([{'binning.dat'}]);
    dlmwrite((strcat(cnt_folder,ProcessingFile)),'');

MovieList = [];
for i=1:length(signals.event)
    MovieList=[MovieList,signals.event(i).stimtype];
end
MovieList %displays the codes for the movies detected for this subject
% for g=1:length(MovieList) %Delete fan events (coded 0)
%    if MovieList(g)<1
%        MovieList(g)='';
%        MovieList(g)='';
%    elseif length(MovieList)<8
%       break
%    end
% end
% for g=1:length(MovieList)
%    if MovieList(g)==255 %Remove any 255 code
%        MovieList(g)='';
%    else
%    end
% end

for row = 1:2
    signal=data(row,:);
     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Average in bins
% 200: Neutral 1
% 201: Neutral 2
% 202: Neutral 3
% 203, 206, 209 Sex alone
% 204, 207, 210 Sex with worry statements
% 205, 208, 211 Sex with body statements
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CalcBin = Bin*SRate; %Length (in data points) per bin
InOrder=[200 201 202 203 206 209 204 207 210 205 208 211];
for Movie=1:length(InOrder)
    OrderforSubject=find(MovieList==InOrder(Movie));
    eval=isempty(OrderforSubject);
    if eval==0 %seems opposite logic in help file, but skips correctly
%                  OrderforSubject
%                  InOrder(Movie)
        if (InOrder(Movie)==200) || (InOrder(Movie)==201) || (InOrder(Movie)==202)
            start=((signals.event(OrderforSubject).offset))+720000; %Take last 3 min of neutral film
            BinMark = start:CalcBin:(start+(180*SRate)); %Data point for start of each bin
            display('Neutral')
            fprintf('Offset %d \n',signals.event(OrderforSubject).offset)
        elseif (InOrder(Movie)==203) || (InOrder(Movie)==206) || (InOrder(Movie)==209)
            start=((signals.event(OrderforSubject).offset));
            BinMark = start:CalcBin:(start+(180*SRate));
            display('SexAlone')
            fprintf('Offset %d \n',signals.event(OrderforSubject).offset)
        elseif (InOrder(Movie)==204) || (InOrder(Movie)==207) || (InOrder(Movie)==210)
            start=((signals.event(OrderforSubject).offset));
            BinMark = start:CalcBin:(start+(180*SRate));
            display('Worry')
            fprintf('Offset %d \n',signals.event(OrderforSubject).offset)
        elseif (InOrder(Movie)==205) || (InOrder(Movie)==208) || (InOrder(Movie)==211)
            start=((signals.event(OrderforSubject).offset));
            BinMark = start:CalcBin:(start+(180*SRate));
            display('Body')
            fprintf('Offset %d \n',signals.event(OrderforSubject).offset)
        else
        end
        for j=2:length(BinMark)
            Avg = mean(signal(1,BinMark(j-1):BinMark(j)));
            dlmwrite((strcat(cnt_folder,ProcessingFile)), Avg, '-append')
        end
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Load the processed data to export for MatLab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
 load D:\Study_Verena\Raw_Data\binning.dat; %Need to fix to update with header specs
 binning=binning';
[pathstr, name, ext, versn] = fileparts(filename);
dlmwrite(ImportToSPSS, binning, '-append')
dlmwrite(SubjectNumbers, name,'-append','delimiter','')
end
%end

Contact us at files@mathworks.com