MATLAB: IAF Neuron simulation [Resolved]

MATLABneurosciencesyntax

volt_rest = -70; % resting potential (mV)
volt_thresh = -50; % action potential thresh. (mV)
volt_reset = -75; % post-spike reset voltage
% membrane parameters
R_m = 10; % neuron membrane resistance (MOhm)
tau = 10; % time constant of decay (ms)
srate = 10000; % sampling rate in Hz
sim_dur = 1; % stimulus duration in seconds
time = 0:1/srate:sim_dur - 1/srate;
input = zeros(1,length(time));
input(dsearchn(time',.3):dsearchn(time',.7)) = 3;
neuronV = volt_rest + zeros(size(timevec));
spiketimes = [];
if neuronV(ti) > volt_thresh
neuronV(ti) = volt_reset;
spiketimes = cat(1,spiketimes,ti);
end
r_i = volt_rest + input(ti)*R_m;
neuronV(ti+1) = r_i + (neuronV(ti) - r_i) * exp(-1000/srate/tau);
neuronV(neuronV==volt_reset) = 40;

Best Answer

I cannot tell you what is exactly written in that book, but a quick view of the code shows that timevec is same is time in your case. As for ti it is an index of the matrix so it can be defined in the following way.

  • For timevec change as follow:
neuronV = volt_rest + zeros(size(time));
  • For the issue with ti do the following:
for ti=1:numel(time)
    if neuronV(ti) > volt_thresh
        neuronV(ti) = volt_reset;
        spiketimes = cat(1,spiketimes,ti);
    end
end

This will remove all error.