Created
June 1, 2019 18:03
-
-
Save NTR0314/b8f5fc823c186f6f78295d7059ede97f to your computer and use it in GitHub Desktop.
Revisions
-
NTR0314 created this gist
Jun 1, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,136 @@ % Ignorieren Sie die folgende Zeile. Überall wo ZuVeraendernderAusdruck im folgenden auftaucht % sind Änderungen durch Sie erforderlich. ZuVeraendernderAusdruck=nan; % Konstanten G_K_max = 36; % Maximale Kalium-Leitfähigkeit (mS) G_Na_max = 120; % Maximale Natrium-Leitfähigkeit (mS) % Spannungen (Nernstspannungen können als konstant betrachtet werden) E_K = -88; % Nernstsspannung für Kalium (mV) E_Na = 50; % Nernstsspannung für Natrium (mV) VpreStep = -65; % Spannung vor Sprung (mV) VpostStep = -110; % Spannung nach Sprung (mV) clampVoltages = [-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40]; % Protokoll für Voltageclamp (mV) % Initialisiserung n_0 = 0.32; m_0 = 0.053; h_0 = 0.6; % Zeit deltat = 0.0005; %Zeitschritt (ms) tend = 10; %Ende der Berechnung (ms) timesteps = 0:deltat:tend; % Preallokation der Matrix für die Raten, Gates, Ströme, und Spannung nVoltages = length(clampVoltages); % Anzahl an clamp voltages nTimesteps = length(timesteps); alpha_n = zeros(nVoltages, nTimesteps); beta_n = zeros(nVoltages, nTimesteps); n = zeros(nVoltages, nTimesteps); ndot = zeros(nVoltages, nTimesteps); I_K = zeros(nVoltages, nTimesteps); alpha_m = zeros(nVoltages, nTimesteps); beta_m = zeros(nVoltages, nTimesteps); m = zeros(nVoltages, nTimesteps); mdot = zeros(nVoltages, nTimesteps); alpha_h = zeros(nVoltages, nTimesteps); beta_h = zeros(nVoltages, nTimesteps); h = zeros(nVoltages, nTimesteps); hdot = zeros(nVoltages, nTimesteps); I_Na = zeros(nVoltages, nTimesteps); %mnh initialisieren m(1,1) = m_0 n(1,1) = n_0 h(1,1) = h_0 %% Simulation % Berechne Raten, Gates (Euler-1-Schritt), I_K und I_Na for iVoltage = 1:nVoltages %Berechnung der Ratenkonstanten temp = 0.01 * ((-(clampVoltages(iVoltage) + 55)) / (exp((-(clampVoltages(iVoltage) + 55)) / (10)) - 1)) if ((temp ~= -inf) && (temp ~= inf) && (isnan(temp))) alpha_n(iVoltage) = temp; end beta_n(iVoltage) = 0.125 * exp(-(((clampVoltages(iVoltage) + 65))/(80))); alpha_m(iVoltage) = 1 temp = 0.1 * ((-(clampVoltages(iVoltage) + 40)) / (exp((-(clampVoltages(iVoltage) + 40)) / (10)) - 1)); if ((temp ~= -inf) && (temp ~= inf) && (isnan(temp))) alpha_m(iVoltage) = temp; end beta_m(iVoltage) = 4 * exp(-1 * ((clampVoltages(iVoltage) + 65)/(18))); alpha_h(iVoltage) = 0.07 * exp((-(clampVoltages(iVoltage) + 65)) / (20)); beta_h(iVoltage) = 1 / (exp((-(clampVoltages(iVoltage) + 35))/10) + 1); for iTimestep = 1:nTimesteps %Die dot-werte mdot(iVoltage,iTimestep) = alpha_m(iVoltage,iTimestep) * (1 - m(iVoltage,iTimestep)) - beta_m(iVoltage,iTimestep) * m(iVoltage,iTimestep); hdot(iVoltage,iTimestep) = alpha_h(iVoltage,iTimestep) * (1 - h(iVoltage,iTimestep)) - beta_h(iVoltage,iTimestep) * h(iVoltage,iTimestep); ndot(iVoltage,iTimestep) = alpha_n(iVoltage,iTimestep) * (1 - n(iVoltage,iTimestep)) - beta_n(iVoltage,iTimestep) * n(iVoltage,iTimestep); % Kalium %%Persönlicher Kommentar %Immer wenn ich folgende Zeilen reinmache, dann läuft der Code nichtmehr zuende. Ich hab jetzt die 2 Zeilen für den Strom auskommentiert. %I_K = G_Na_max * (m(iVoltage,iTimestep))^3 * h(iVoltage,iTimestep) * (iVoltage - E_Na); % Natrium %I_Na = G_K_max * (m(iVoltage,iTimestep))^4 * (iVoltage - E_K); if(iTimestep < nTimesteps) m(iVoltage,iTimestep+1) = m(iVoltage,iTimestep) + deltat * mdot(iVoltage,iTimestep); h(iVoltage,iTimestep+1) = h(iVoltage,iTimestep) + deltat * hdot(iVoltage,iTimestep); n(iVoltage,iTimestep+1) = n(iVoltage,iTimestep) + deltat * ndot(iVoltage,iTimestep); end end end %% Plotten % Plotten der Raten und Gates für eine Spannung (Index 14) und Plotten der Ströme für alle Spannungen % Kalium subplot(3,1,1) title('14. Voltagestep') plot(timesteps,alpha_n(14,:)) hold on plot(timesteps,beta_n(14,:),'r') legend('alpha_n','beta_n') xlabel('Time (ms)') ylabel('Rate constant (1/ms)') subplot(3,1,2) title('14. Voltagestep') plot(timesteps, n(14,:)) xlabel('Time (ms)') ylabel('Gating variable n') subplot(3,1,3) plot(timesteps,I_K) xlabel('Time (ms)') ylabel('I_{K} current density (\muA)') % Natrium figure() subplot(3,1,1) plot(timesteps,alpha_m(14,:)) hold on, plot(timesteps,beta_m(14,:),'r') plot(timesteps,alpha_h(14,:)) plot(timesteps,beta_h(14,:)) legend('alpha_m','beta_m', 'alpha_h', 'beta_h') xlabel('Time (ms)'), ylabel('Rate constant (1/ms)') subplot(3,1,2) plot(timesteps, m(14,:)) hold on plot(timesteps, h(14,:)) legend('m','h') xlabel('Time (ms)') ylabel('Gating variables m, h') subplot(3,1,3) plot(timesteps,I_Na) xlabel('Time (ms)') ylabel('I_{Na} current density (\muA)')