function I = Isequence(varargin)
% ISEQUENCE Make Spatio-Temporal Intensity Table
%
% I = ISEQUENCE(x,t,f,lambda,phi,sigma,f_gamma,A_gamma,p0,p1) with 9 args
% returns intensity I(x,t) for a moving pulse preceded by
% gamma oscillations and followed by 50% grey
%
% PERIOD = ISEQUENCE(f,lambda,phi,sigma,f_gamma,A_gamma,p0,p1), with 7 args,
% returns period of stimulus (Inf) (i.e. nonperiodic)
% The PERIOD function was used in our implementation of
% the original Chance model to save memory (so that the intensity
% of only one cycle of the need be handled).
% It is not used for the present model.
%
% STRING = ISEQUENCE(), with 0 args, returns string of stimulus parameters.
%
% Code written by SEAN CARVER, last modified 12-5-2007
if nargin == 0
I = '{f,lambda,phi,sigma,f_gamma,A_gamma,p0,p1}'; % stimulus parameters
elseif nargin < 9 % i.e. x,t not passed in
I = Inf; % Infinite period for non-periodic
else
x = varargin{1};
t = varargin{2};
f = varargin{3};
lambda = varargin{4};
phi = varargin{5};
sigma = varargin{6};
f_gamma = varargin{7};
A_gamma = varargin{8};
p0 = varargin{9};
p1 = varargin{10};
p = (2*pi*x.'*ones(1,length(t))/lambda ...
- sigma*2*pi*ones(length(x),1)*f*t ...
+ phi*pi/180);
Ig = A_gamma*sin(2*pi*ones(length(x),1)*f_gamma*t); % Ig (gamma oscill)
I = sin(p); % I (moving sine grating)
region1 = find(sigma*p>p0); % determines region 1 (gamma region)
region3 = find(sigma*p<p1); % determines region 3 (50% grey region)
% region 2 is everywhere else
I(region1) = Ig(region1); % overwrites I in region 1
I(region3) = 0; % overwrites I in region 3
end