function [E,NOI] = excitation(Imax,Nmsi,Itol,noAP,tspan,model,stim) %EXCITATION Estimate the excitation threshold % [E,NOI,y1] = excitation(Imax,Nmsi,Itol,noAP,tspan,model,stim) this function % estimates the excitation threshold for a nerve fiber [model] to a stimulus % [stim]. The timespand for the simulations are [tspan] = [tstart tend]. % % The threshold is estimated by a binary search algorithm, where the Itop % first are determined. The intial guess for Itop are [Imax], and this % value are used unless it fails to evoke an action potential (AP). If it fails % to evoke an AP a linear downwards seach are used, with [Nmsi] steps. If none % of these evokes an AP the function returns NaN. The excitation thresholds % are estimated with an precision of [Itol], and the number of simulations % are returned in NOI (No of iterations). %Find the value which produce an action potential. Etest = Imax:-Imax/Nmsi:Imax/Nmsi; Et = NaN; NOI = 0; n = Nmsi; %fprintf('Excitation determination: '); while isnan(Et) & n > 0 NOI = NOI + 1; if isAP(-Etest(n),noAP,tspan,model,stim) Et = Etest(n); end %fprintf('#'); n = n-1; end Eb = 0; if ~isnan(Et) while (Et - Eb) > Itol NOI = NOI + 1; Etest = Eb+(Et-Eb)/2; if isAP(-Etest,noAP,tspan,model,stim) Et = Etest; else Eb = Etest; end end E = Et; %fprintf(' = %.2fnA\n',E*1e9); else E = NaN; %fprintf(' = failed\n'); end