Commit f2ee658c authored by mposthuma's avatar mposthuma
Browse files
parents d8e99d4e ed02ecab
function pb_vGenExp_VisFlash(varargin)
%% Initialization
% Clear, empty, default imputs
% Clear, empty
pb_clean;
disp('>> GENERATING VC EXPERIMENT <<');
disp(' ...')
pb_clean;
disp('>> GENERATING VC EXPERIMENT <<');
disp(' ...')
cfn = 0;
cfn = 0;
% Get Filename
st = dbstack;
sname = st.name;
ind = strfind(sname,'_');
if isempty(ind); ind = 0; end
fn = sname(max(ind)+1:end);
%% Desired azimuth and elevation
% Define hemisphere
showexp = pb_keyval('showexp',varargin,true);
expfile = pb_keyval('fname',varargin,[fn '.exp']);
datdir = pb_keyval('datdir',varargin,'DEFAULT');
cdir = pb_keyval('cdir',varargin,userpath);
cd(cdir);
%% Desired azimuth and elevation
% Define hemisphere
% Select target ranges
maxAbsAz = 45;
maxAbsEl = 35;
%Select target ranges
maxAbsAz = 35;
maxAbsEl = 30;
% Possible targets
dAz = -45:05:45;
dEl = -35:10:35;
dAz = -35:05:35;
dEl = -30:10:30;
[dAz,dEl] = meshgrid(dAz,dEl);
dAz = dAz(:);
dEl = dEl(:);
......@@ -42,74 +29,45 @@
dAz = dAz(sel);
dEl = dEl(sel);
nloc = numel(dAz);
%% Select target positions used in experiment
% Get targets.
%% Select target positions used in experiment
% Get targets.
targetl = length(dAz);
targetInd = randperm(targetl);
dAz = dAz(sort(targetInd(1:targetl)));
dEl = dEl(sort(targetInd(1:targetl)));
%% Actual azimuth and elevation
% The actual speaker positions are not perfectly aligned with 5 deg
cfg = pb_vLookup; % sphere positions
channel = cfg.interpolant(dAz',dEl');
X = cfg.lookup(channel+1,4);
Y = cfg.lookup(channel+1,5);
%% Graphics
if showexp
cfn = pb_newfig(cfn);
hold on;
plot(dAz,dEl,'o')
hold on
plot(X,Y,'x')
axis([-60 60 -60 60]);
axis square
set(gca,'TickDir','out');
xlabel('Azimuth (deg)');
ylabel('Elevation (deg)');
pb_nicegraph;
end
%% Stimulus Condition
%% Stimulus Condition
% FIXATION LED
fixled.bool = false; % do you want a fixation light?
fixled.bool = false; % no fixation light
fixled.x = 0;
fixled.y = 0;
fixled.dur = 1000;
fixled.dur = 1000; % 1, 2, 4, 16 ms (?)
fixled.pause = 1000;
modality = 2; % 2=VISUAL
int = [50]; % w/ [i1, i2, i3...]
dur = 2.^(0:7)*0.5; % stim duration in ms 2.^(0:7)*.5
int = [20 25 30 35 40 45 50]; % w/ [i1, i2, i3...]
dur = 16; % stim duration in ms 2.^(0:7)*.5
col = [1]; % w/ [R,G]
[X,~,~] = ndgrid(X,0,col,int,dur);
[Y,~,col,int,dur] = ndgrid(Y,0,col,int,dur);
X = X(:);
Y = Y(:);
int = int(:);
col = col(:);
dur = dur(:);
%% Number and size
Sz = size(X);
N = Sz(1); % number of trials
N = 48; % number of trials = 48 per block
maxtrialdur = fixled.bool*(fixled.dur + fixled.pause) + max(dur);
maxtrialdur = max(dur);
maxtrialdur = ceil(maxtrialdur/500)/2;
%% Vestibular blocks
blockdur = 150; % block duration in seconds
blockdur = 200; % block duration in seconds
bdureff = blockdur-(8*pi); % start & stop
trialsinblock = bdureff / (maxtrialdur+1); % trials per block
totaltime = ceil(N*(maxtrialdur+1)) + 8*pi;
......@@ -118,32 +76,15 @@
nblockreps = N/trialsinblock;
block.Horizontal = struct('Amplitude', 0, 'Signal', 1, 'Duration', blockdur, 'Frequency',.16);
block.Vertical = struct('Amplitude', 70, 'Signal', 2, 'Duration', blockdur, 'Frequency',.16);
writeexp(expfile,datdir,X,Y,int,dur,block,fixled);
% see below, these are helper functions to write an exp-file line by line / stimulus by stimulus
%% Show the exp-file in Wordpad
% for PCs
if showexp
if ispc
dos(['"C:\Program Files\Windows NT\Accessories\wordpad.exe" ' expfile ' &']);
elseif ismac
system(['open -a TextWrangler ' cd filesep expfile]);
end
end
function writeexp(expfile,datdir,theta,phi,int,dur,block,fixled)
block.Vertical = struct('Amplitude', 70, 'Signal', 2, 'Duration', blockdur, 'Frequency',1/(2*pi));
end
function writeexp(expfile,datdir,theta,phi,int,dur,block,fixled)
% Save known trial-configurations in exp-file
%
% WRITEEXP WRITEEXP(FNAME,DATDIR,THETA,PHI,ID,LEDON)
%
% WRITEEXP(FNAME,THETA,PHI,ID,LEDON)
%
% Write exp-file with file-name FNAME.
expfile = fcheckext(expfile,'.exp'); % check whether the extension exp is included
expfile = 'Expfile';
expfile = fcheckext(expfile,'.exp'); % check whether the extension exp is included
fid = fopen(expfile,'wt+'); % this is the way to write date to a new file
......@@ -203,4 +144,5 @@ function writeexp(expfile,datdir,theta,phi,int,dur,block,fixled)
trlIdx = trlIdx+1;
end
fclose(fid);
end
\ No newline at end of file
end
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment