Created
June 1, 2019 18:03
-
-
Save NTR0314/b8f5fc823c186f6f78295d7059ede97f to your computer and use it in GitHub Desktop.
So helfen Sie mir bitter Herr Springer
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 characters
% 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)') | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment