Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marc Posthuma
Bachelor Stage
Commits
f2ee658c
Commit
f2ee658c
authored
May 31, 2021
by
mposthuma
Browse files
Merge branch 'master' of
https://gitlab.science.ru.nl/mposthuma/bachelor-stage
parents
d8e99d4e
ed02ecab
Changes
1
Hide whitespace changes
Inline
Side-by-side
experiment_file_main.m
View file @
f2ee658c
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
=
-
4
5
:
05
:
4
5
;
dEl
=
-
3
5
:
10
:
3
5
;
dAz
=
-
3
5
:
05
:
3
5
;
dEl
=
-
3
0
:
10
:
3
0
;
[
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
=
15
0
;
% block duration in seconds
blockdur
=
20
0
;
% 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
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment