Dissertation data excerpts

M. Everett Lawson

Symbol codex

RAW CODICES: greatest effect occurs when viewed at 55 degrees eccentricity from central fixation in a controlled environment (if being viewed on an offsite location without an immersive display, please play each video at full screen on a laptop or desktop and direct your gaze such that the stimulus falls into the far edge of your vision on either the left or the right side)

Sample symbol detection speeds for a single observer in a standard psychophysical environment

Data summary excerpts for control environment, dynamic environment, high load environment, and sample gaze data output

https://photos.app.goo.gl/b2v8wBKL7VM3jdV5A

Sample MATLAB code for parsing coalesced data outputs

%semantic study data analysis
clear
clc

raw_control = readtable('control\subj01_semantic_timing_control.txt');
raw_lowload = readtable('lowload\subj01_semantic_timing_lowload.txt');
% SYMBOL ACCURACY
SYMBOL = unique(raw_control.ACTUAL); ACCURACY = zeros(12,1);
control_sym_acc = table(SYMBOL,ACCURACY);
lowload_sym_acc = table(SYMBOL,ACCURACY);

for i = 1:numel(SYMBOL)
    correct = 0; incorrect = 0;
    for j = (find(strcmp(SYMBOL{i},raw_control.ACTUAL)))'
        if strcmp(raw_control.REPORTED{j},raw_control.ACTUAL{j})
            correct = correct + 1;
        else
            incorrect = incorrect + 1;
        end
    end
    control_sym_acc.ACCURACY(i) = correct/(incorrect+correct);
    
    correct = 0; incorrect = 0;
    for j = (find(strcmp(SYMBOL{i},raw_lowload.ACTUAL)))'
        if strcmp(raw_lowload.REPORTED{j},raw_lowload.ACTUAL{j})
            correct = correct + 1;
        else
            incorrect = incorrect + 1;
        end
    end
    lowload_sym_acc.ACCURACY(i) = correct/(incorrect+correct);
end
control_sym_acc
lowload_sym_acc

%% SYMBOL ACCURACY: left versus right
SIDE = {'L';'R'}; ACCURACY = zeros(2,1);
LvR_acc = table(SIDE,ACCURACY);

for i = 1:numel(SIDE)
    correct = 0; incorrect = 0;
    for j = (find(strcmp(SIDE{i},raw_control.SIDE)))'
        if strcmp(raw_control.REPORTED{j},raw_control.ACTUAL{j})
            correct = correct + 1;
        else
            incorrect = incorrect + 1;
        end
    end
    LvR_acc.ACCURACY(i) = correct/(incorrect+correct);
end
LvR_acc


%%
% SYMBOL DETECTION OVER TIME
clc
figure(1);
respTimes = zeros(20,12);
for i = 1:numel(SYMBOL)
    symInds = find(strcmp(SYMBOL{i},raw_control.ACTUAL));
    respTimes(:,i) = raw_control.DETECTION(symInds);
end
respTimez = array2table(respTimes,'VariableNames',SYMBOL);
s = stackedplot(respTimez,'Marker','o');
for i = 1:12
    s.AxesProperties(i).YLimits = [0 20];
end
%%
figure(2);clf
respTimes = zeros(20,12);
for i = 1:numel(SYMBOL)
    symInds = find(strcmp(SYMBOL{i},raw_lowload.ACTUAL));
    for j = 1:numel(symInds)
        val = str2double(raw_lowload.DETECTION{symInds(j)});
        if val > 25
            val = 0;
        end
        respTimes(j,i) = val;
    end
end
respTimez = array2table(respTimes,'VariableNames',SYMBOL);
%s = stackedplot(respTimez,'Marker','o');
for i = 1:4
    subplot(4,1,i)
    plot(1:10,respTimes(1:2:end,i),'Marker','o','MarkerSize',2)
    xticks([]);
    ylim([-1 16]); yticks(0:2:15);
    ylabel(sprintf('detection time\n(sec)'))
    title(sprintf('\n\nSymbol: %s (left)', SYMBOL{i}))
    xlim([0 11]); xticks(1:10); 
    xlabel('study sequence')
    grid on
end

figure(3);clf
for i = 1:4
    subplot(4,1,i)
    plot(1:10,respTimes(2:2:end,i),'Marker','o','MarkerSize',2)
    xticks([]);
    ylim([-1 16]); yticks(0:2:15);
    ylabel(sprintf('detection time\n(sec)'))
    title(sprintf('\n\nSymbol: %s (right)', SYMBOL{i}))
    xlim([0 11]); xticks(1:10); 
    xlabel('study sequence')
    grid on
end
figure(4);clf
for i = 1:4
    subplot(4,1,i)
    plot(1:10,respTimes(2:2:end,i),'Marker','o','MarkerSize',2)
    xticks([]);
    ylim([-1 16]); yticks(0:2:15);
    ylabel(sprintf('detection time\n(sec)'))
    title(sprintf('\n\nSymbol: %s (right)', SYMBOL{i}))
    xlim([0 11]); xticks(1:10); 
    xlabel('study sequence')
    grid on
end
%%
% SYMBOL ACCURACY IN EACH SEQUENCE OVER TIME
SEQUENCE = (1:10)'; ACCURACY = zeros(10,1);
seq_acc = table(SEQUENCE,ACCURACY);

for i = 1:numel(SEQUENCE)
    correct = 0; incorrect = 0;
    for j = (find(raw_control.SEQUENCE == SEQUENCE(i)))'
        if strcmp(raw_control.REPORTED{j},raw_control.ACTUAL{j})
            correct = correct + 1;
        else
            incorrect = incorrect + 1;
        end
    end
    seq_acc.ACCURACY(i) = correct/(incorrect+correct);
end
seq_acc
figure
plot(seq_acc.SEQUENCE,seq_acc.ACCURACY)
refline([0 0])
refline([0 1])
ylim([-0.1 1.1])

%% symbol durations
fr = 59.94;
symDur = [2+54/fr;  % 2
          3+11/fr;  % 3
          2+47/fr;  % 4
          3+31/fr;  % 5
          3;        % A
          3+41/fr;  % B
          2+29/fr;  % C
          3+6/fr;   % D
          3+59/fr;  % BOAT
          4+29/fr;  % FLOWER
          5+46/fr;  % STICKFIGURE
          5+34/fr]; % TREE

buffer = 90/fr;

% SYMBOL AVERAGE RESPONSE TIME:
SYMBOL = unique(raw_control.ACTUAL); AVG_RESPONSE_TIME = zeros(12,1);
RESPONSE_TIMES = zeros(12,20); STD = zeros(12,1);
sym_AvgRespTime = table(SYMBOL,RESPONSE_TIMES,AVG_RESPONSE_TIME,STD);

for i = 1:numel(SYMBOL)
    symInds = find(strcmp(SYMBOL{i},raw_control.ACTUAL));
    respTimes = raw_control.DETECTION(symInds);
    sym_AvgRespTime.RESPONSE_TIMES(i,:) = respTimes;
    sym_AvgRespTime.AVG_RESPONSE_TIME(i) = mean(respTimes);
    sym_AcgRespTime.STD = std(respTimes);
end
sym_AvgRespTime

© 2020 M. Everett Lawson.