No BSD License  

Highlights from
Neurocal

image thumbnail
from Neurocal by Zeng Lertmanorat
Simulation describing the electrical activity of nerve cell (neuron) by solving cable equation

hh(varargin)
function [varargout] = hh(varargin)
%1='m','h','alfam','alfah','betam','betah'
%2=V[1:#node]
%3 (for m&h, old mgate & hgate have to be supplied
%4 = dt
persistent q10;
action=varargin{1};
switch action
case 'Initial'
   model=[];%remove the old model
   %-----------------------
   model.name='hh';
   %-----------------------
   model.gate{1}='m';
   model.gate{2}='h';
   model.gate{3}='n';
   %-----------------------
   model.I{1}.name='Na';
   model.I{1}.G=120;        %(kOhm-Cm^2)^-1
   model.I{1}.E=55;         %(mV)
   model.I{1}.gate=[1 3;
                    2 1]; %gate1^3.gate2^1
   
   model.I{2}.name='K';
   model.I{2}.G=36;
   model.I{2}.E=-72;
   model.I{2}.gate=[3 4];
   
   model.I{3}.name='Lk';
   model.I{3}.G=0.3;
   model.I{3}.E=-49.4001;
   model.I{3}.gate=[];
   %-----------------------
   %optional
   model.vini=-60;
   model.temperature=6;
   %-----------------------
   varargout{1}=model;
   
case 'setting'
    %Setting is called every calculation
    q=3;
    q10=q^((varargin{2}-6.3)/10);
    
case 'm'
    %v=varargin{2}; 
    %gate=varargin{3};
    %dt=varargin{4};
    varargout{1}=Gate_Trap(varargin{3},varargin{4},hh('m_alfa',varargin{2}),hh('m_beta',varargin{2}));
    
case 'm_alfa'
    %v=varargin{2}; 
	varargout{1}= -0.1*q10*(varargin{2}+35)./( exp(-(varargin{2}+35)/10) -1 ); 

case 'm_beta'
    %v=varargin{2}; 
	varargout{1}=4*q10*exp( -(varargin{2}+60)/18 );


case 'h'
    %v=varargin{2}; 
    %gate=varargin{3};
    %dt=varargin{4};
    varargout{1}=Gate_Trap(varargin{3},varargin{4},hh('h_alfa',varargin{2}),hh('h_beta',varargin{2}));
case 'h_alfa'
    %v=varargin{2}; 
	varargout{1}=0.07*q10*exp( -(varargin{2}+60)/20);
case 'h_beta'
    %v=varargin{2}; 
	varargout{1}=q10./( exp(-(varargin{2}+30)/10) +1 );   
case 'n'
    %v=varargin{2}; 
    %gate=varargin{3};
    %dt=varargin{4};
    varargout{1}=Gate_Trap(varargin{3},varargin{4},hh('n_alfa',varargin{2}),hh('n_beta',varargin{2}));
   
case 'n_alfa'
    %v=varargin{2}; 
	varargout{1}= -0.01*q10*(varargin{2}+50)./( exp( -(varargin{2}+50)/10  ) - 1 );
case 'n_beta'
    %v=varargin{2}; 
	varargout{1}=0.125*q10*exp( -(varargin{2}+60)/80);
   
otherwise
    disp(':(')
end

Contact us at files@mathworks.com