2011-10-06 35 views
6

我是新來的Matlab。我希望你能幫助我。 我必須解決使用ODE45函數的ODE系統。這是描述我的平等的功能。Matlab ode45。如何在調用它時更改其中的參數?

function dNdt = rateEquations(t, y) 
    %populations of corresponding state 
    Ng = y(1); 
    Ns = y(2); 
    Nt = y(3); 

    %All constants used are dropped for the sake of easy reading. 

注意參數F.

%rate equations 
    dNs = s0 * Ng * F - Ns/ t_S1; 
    dNt = Ns/t_ISC - Nt/t_T1; 
    dNg = -dNt - dNs; 

    dNdt = [dNg; dNs; dNt]; 

end 

然後,在我的腳本的.m文件我調用ODE45函數 'for循環'。在每次迭代中,我必須更改參數F並將其傳遞給我的'rateEquations'函數。但我不知道如何去實現它。

for T = Tmin: dt : Tmax 
    %initial conditions 
    initialConditions = [N0 0 0]; 
    timeSpan = [T T+dt]; 

在調用ODE45之前F將被改變。

[t,N] = ode45('rateEquations', timeSpan, initialConditions) 

等等...

end 

在此先感謝。

回答

7

你想使你的F導函數的參數,並通過正確的匿名函數來ode45

[t,N] = ode45(@(t,y) rateEquations(t,y,F), timeSpan, initialConditions) 
+0

是啊,它的工作原理。非常感謝。這就是我正在尋找的東西。 :) – jacksonslsmg4

+0

你也可以用全局變量來做到這一點。但我試圖使用並行計算(parfor),並不喜歡全局變量。但是這對parfor有用。 – fibonatic

+0

@Nzbuu,如果我這樣做,我需要使用插值? – kyle

相關問題