How to produce results of script in table

조회 수: 1 (최근 30일)
Anthony Koning
Anthony Koning 2021년 12월 15일
편집: Chris 2021년 12월 15일
Hi, would anyone know how to produce the results of the script in a neat table format similar to the last line of this script? Removing the comment only produces the results of the final calculation in a 1x8 table, rather than the expected 9x8 table. Thanks
% Set parameters (constants)
tStart = -.200 ; % start time, millisec
tEnd = .200 ; % end time, millisec
deltaT = 0.050 ; % time step, millisec
nStep = ceil((tEnd-tStart)/deltaT) ; % number of time steps
outputInterval = 20 ; % number of time steps between screen output
Vrest = -60 ; % resting potential, mV
EK = -72.1 ; % potassium Nernst potential, mV
ENa = 52.4 ; % sodium Nernst potential, mV
EL = -49.2 ; % leak Nernst potential, mV
gK_max = 36 ; % potassium saturation conductance, mS/cm^2
gNa_max = 120 ; % sodium saturation conductance, mS/cm^2
gL_max = 0.3 ; % leak saturation conductance, mS/cm^2
Cm = 1 ; % Membrane Capacitance
Jstim = 200 ;
StimDur = .15 ;
time = tStart:deltaT;tEnd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Set initial value of state variables
Vm = Vrest ; % membrane potential, mV
n = 0.31768 ; % initial value of n gate
m = 0.05293 ; % initial value of m gate
h = 0.59612 ; % initial value of h gate
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for iStep = 1:nStep
% Compute ion currents at tNow, then apply stimulus current
if( 0<=tNow && tNow<StimDur ) % start stimulus current at tNow=0
Is = Jstim ;
else % stop stimulus when tNow = StimDur
Is = 0 ;
end
JNa = gNa_max.*m.^3.*h.*(Vm-ENa) ;
JK = gK_max.*n.^4.*(Vm-EK) ;
JL = gL_max.*(Vm-EL);
Jion = JNa+JK+JL
dV_dt = (Is.*Jion)./Cm
% Compute gates' opening and closing rates
[a_n, b_n] = get_n_rates(Vm)
[a_m, b_m] = get_m_rates(Vm)
[a_h, b_h] = get_h_rates(Vm)
% Compute change in state variables
deltaVm = ((Is - JNa - JK - JL)./Cm) .* deltaT ;
delta_m = (a_m.*(1-m) - b_m.*(m)) .* deltaT ;
delta_n = (a_n.*(1-n) - b_n.*(n)) .* deltaT ;
delta_h = (a_h.*(1-h) - b_h.*(h)) .* deltaT ;
if mod(iStep,outputInterval) == 0
fprintf(iStep, tNow, Is, Vm, deltaVm, n, m, h) ;
end % if mod(tNow)
%Update State Veriable
Vm = Vm + deltaVm ;
m = m + delta_m
n = n + delta_n
h = h + delta_h
tNow = tStart + iStep.*deltaT
% Update state variables
plot_Vm(iStep) = Vm ;
plot_time(iStep) = tNow ;
end % for iStep
%T = table(iStep, tNow, Is, Vm, deltaVm, n, m, h)

채택된 답변

Chris
Chris 2021년 12월 15일
편집: Chris 2021년 12월 15일
Your variables are all updated in place, overwriting the previous state.
You could make an array out of each variable, and update the arrays like so:
m(iStep) = m(iStep-1) + delta_m(istep);
But at this point, it's probably easiest to make new variables that store the output at the end of the loop:
mAll(iStep) = m;
nAll(iStep) = n;

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by