function V=expIF_neuron(time,varargin)
if nargin>1
Vpar=varargin{1};
else
Vpar=[-60 -50 -70 40 -60];
end
if nargin>2
Mpar=varargin{2};
else
Mpar=[1 1 10];
end
if nargin>3
type=varargin{3};
else
type=1;
end
if nargin>4
Curr=varargin{4};
else
Curr=[.05 2 0];
end
dt=(time(end)-time(1))/(numel(time)-1);
R=Mpar(2);
C=Mpar(1);
Sref=round(Mpar(3)/dt);
if type==1;
for k=1:numel(time);
I(k)=sineCurrent(time(k),Curr(1),Curr(2),Curr(3));
V_inf(k)=Vpar(1)+(I(k)*R);
end
else
for k=1:numel(time);
I(k)=stepCurrent(time(k),Curr(1),Curr(2));
V_inf(k)=Vpar(1)+(I(k)*R);
end
end
V=zeros(1,numel(time));
V(1)=Vpar(5);
counter=1;
for k=1:(numel(V)-1);
if V(k)==Vpar(3) & counter<Sref
V(k+1)=Vpar(3);
counter=counter+1;
elseif V(k)>=Vpar(2)
V(k)=Vpar(4);
V(k+1)=Vpar(3);
counter=1;
else
V(k+1)=V_inf(k)+(V(k)-V_inf(k))*exp(-dt/(R*C));
end
end