Excel Values Different from MatLab

1 次查看(过去 30 天)
John Kim
John Kim 2019-10-24
The Excel Value I calculated through the program is valued differently from the results from MatLab.
If you look at the attached file, I am trying to calculate the average correct value and average latency depending on the type.
Overall Accuracy - Average accuracy of all trials EXCEPT those with a latency of 0
Overall Latency - Average latency of all trials whose "Correct" value is equal to 1
NonTarget Accuracy - Average Accuracy of all trials EXCEPT those with a latency of 0 AND that belong to either "Type" 11 or 22
NonTarget Latency - Average latency of all trials whose "Correct" value is equal to 1 AND that belong to either "Type" 11 or 22
Target Accuracy - Average Accuracy of all trials EXCEPT those with a latency of 0 AND that belong to either "Type" 33 or 44
Target Latency - Average latency of all trials whose "Correct" value is equal to 1 AND that belong to either "Type" 33 or 44
The code I used is as follows:
id = 'SubjectID';
path = '(Path folder containing files)';
%Input subject file.
filename = [path id 'N2B1.dat'];
delimiter = ' ';
%North Chamber = start at 21. South Chamber = start at 22.
startRow = 22;
formatSpec = '%f%f%f%f%f%s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);
fclose(fileID);
tab1 = table(dataArray{1:end-1}, 'VariableNames', {'Trial','Resp','Type','Correct','Latency','StimResp'});
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
%to merge the two files
tabm = vertcat(tab1);
clc
%Delete extra rows generated by STIM responses
toDelete = tabm.Type<5;
tabm(toDelete,:) = [];
size(tabm);
%Code for omissions
tabm.Omiss = zeros(size(tabm.Type));
tabm.Omiss(tabm.Latency==3000 & tabm.Correct==0) = 1;
%Code for comissions
tabm.Comiss = tabm.Correct;
tabm.Comiss(tabm.Correct==1) = 0;
tabm.Comiss(tabm.Correct==0) = 1;
tabm.Omiss(tabm.Latency==3000 & tabm.Correct==0) = 1;
%Code target & non-target
%Recode a new variable (Cond) as 1 = target and 2 = non-target
tabm.Cond = tabm.Type;
tabm.Cond(tabm.Cond==33) = 1;
tabm.Cond(tabm.Cond==44) = 1;
tabm.Cond(tabm.Cond==11) = 2;
tabm.Cond(tabm.Cond==22) = 2;
%Calculate Performance Stuff.
OverallAcc = mean(tabm.Correct)*100;
OverallRT = mean(tabm.Latency(tabm.Correct==1));
NonTargetAcc = mean(tabm.Correct(tabm.Cond==2))*100;
TargetAcc = mean(tabm.Correct(tabm.Cond==1))*100;
NonTargetRT = mean(tabm.Latency(tabm.Correct==1 & tabm.Cond==2));
TargetRT = mean(tabm.Latency(tabm.Correct==1 & tabm.Cond==1));
OverallRT_std = std(tabm.Latency(tabm.Correct==1));
NonTargetRT_std = std(tabm.Latency(tabm.Correct==1 & tabm.Cond==1));
TargetRT_std = std(tabm.Latency(tabm.Correct==1 & tabm.Cond==2));
%Calculate Coefficient of Variation (Std / Reaction Time)
OverallCV = (OverallRT_std/OverallRT);
NonTargetCV = (NonTargetRT_std/NonTargetRT);
TargetCV = (TargetRT_std/TargetRT);
output = table(OverallAcc, OverallRT, OverallCV, TargetAcc, TargetRT, TargetCV, NonTargetAcc, NonTargetRT, NonTargetCV);

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Import from MATLAB 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by