Vinnaren i pepparkakshustävlingen!
2015-05-17, 16:02
  #1
Medlem
Hej! Får inte denna matlab-kod att fungera:

clear all
close all

% Stokastisk simulerin av cirkadiska rytmer hos proteiner

% Ordningen på proteinerna

% 1. A
% 2. C
% 3. D_A
% 4. D_A'
% 5. D_R
% 6. D_R'
% 7. M_A
% 8. M_R
% 9. R

% Initiala tillstånd
A0=0; C0=0; DA0=1; DAp0=0; DR0=1; DRp0=0; MA0=0; MR0=0; R0=0;

t0=0; % Starttid
t=t0;
Tfinal=200; % Sluttid

nr=nr_vilar; % Anger förändring i reaktion r
u=u0;
u_save=u0; % Anger initialvärdet i den kommande matris där värden för tillstånd
% lagras vart m:e steg
t_save=t0; % Anger initialvärdet i den kommande vektorn där tiden lagras
% vart m:e steg
i=2; % Index till de värden som ska sparas
m=100; % m anger hur ifta lagringen sker
counterstep=1; % Counterstep anger aktuellt tidssteg i loopen

while t<Tfinal
w=prop_vilar(u); % Propensitetsfunktionerna w
a0=sum(w);
u1=rand; % Genererar slumptal från en likformig fördelning U(0,1)
u2=rand;
T=-log(u1)/a0; % Bestämmer längden av nästa tidssteg
csw=cumsum(w);
r=find((csw>(u2*a0)),1);
u=u+nr(r,; % Uppdaterar tillstånden
t=t+T; % Uppdaterar tiden

% Sparar värden vart m:e steg
if mod(counterstep,m)==0
u_save(i,=u;
t_save(i)=t;
i=i+1;
end

counterstep=counterstep+1;
end

subplot(2,1,1)
plot(t_save,u_save(:,1)) % Protein A
title('Tidsvariation av aktivatorprotein A')
xlabel('tid [h]')
ylabel('antal molekyler')
xlim([t0,Tfinal])

subplot(2,1,2)
plot(t_save,u_save(:,9)) % Protein R
title('Tidsvariation av repressorprotein R')
xlabel('tid [h]')
ylabel('antal molekyler')
xlim([t0,Tfinal])


Får detta felmeddelande:

Undefined function or variable 'u0'.

Error in Stokmod (line 26)
u=u0;
Citera
2015-05-17, 16:04
  #2
Medlem
function w = prop_vilar(u, p)
%
% w = prop_vilar(u, p)
% Propensities, w, for the Vilar oscillator.
%
% Input: u - the current state.
% p - list of parameters
%
% The current state variables (u) are ordered as:
% A C D_A D_A' D_R D_R' M_A M_R R
% The parameters (in p) are ordered as:
% alfa_A alfa'_A alfa_R alfa'_R beta_A beta_R teta_A teta_R ...
% gamma_A gamma_R gamma_C delta_M_R delta_M_A delta_A delta_R
%

alfaA = p(1); alfapA = p(2);
alfaR = p(3); alfapR = p(4);
betaA = p(5); betaR = p(6);
tetaA = p(7); tetaR = p(8);
gammaA = p(9); gammaR = p(10); gammaC = p(11);
deltaMR = p(12); deltaMA = p(13); deltaA = p(14);
deltaR = p(15);

w = zeros(18,1);
w(1 ) = tetaA*u(4);
w(2 ) = gammaA*u(1)*u(3);
w(3 ) = tetaR*u(6);
w(4 ) = gammaR*u(5)*u(1);
w(5 ) = alfapR*u(6);
w(6 ) = alfaR*u(5);
w(7 ) = deltaMR*u(8);
w(8 ) = alfapA*u(4);
w(9 ) = alfaA*u(3);
w(10) = deltaMA*u(7);
w(11) = betaR*u(8);
w(12) = deltaR*u(9);
w(13) = deltaA*u(2);
w(14) = betaA*u(7);
w(15) = tetaA*u(4);
w(16) = tetaR*u(6);
w(17) = deltaA*u(1);
w(18) = gammaC*u(1)*u(9);
Citera
2015-05-17, 17:32
  #3
Medlem
Felmeddelandet säger vad som är fel här. Du har inte definierat u0 innan du försöker tilldela u=u0.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback