对于一个项目我需要理解一个matlab代码,但由于我很新,我真的不明白发生了什么。我有一个函数文件和一个脚本文件。
功能:
function dxdt = sniffer_ode(t,x,par,tu)
X = x(1);
R = x(2);
k1 = par(1);
k2 = par(2);
k3 = par(3);
k4 = par(4);
S = interp1(tu(:,1),tu(:,2),t);
dxdt(1) = k3*S-k4*X;
dxdt(2) = k1*S-k2*X*R;
dxdt = dxdt(:); %dxdt should be column
和脚本文件:
%sniffer
close all
%initial conditions:
X0=0; R0=0;
x0=[X0 R0];
%parameters:
k1=1; k2=1; k3=1; k4=1;
par=[k1 k2 k3 k4];
%input:
tu=[ 0 , 0
1 , 0
1.01, 1
20 , 1];
[t,x] = ode45(@sniffer_ode,[0 20],x0, [],par,tu);
plot(t,x);
所以问题是:发生了什么?我还需要在与X和R相同的图中绘制S.我该怎么做?
感谢您的帮助!
答案 0 :(得分:0)
这是一个非常基本的Matlab问题。您tons of information的requested topic就是slides。我认为这些interp1
将帮助您走上正确的道路。
然而,快速解释;您提供的第一个代码是描述您的常微分方程的函数。此函数必须始终为x' = f(t,x,...)
形式。此处t
是时间,x
是州。在状态之后(在点...
的位置),您可以定义其他输入参数,例如在您的ode函数中完成的。此外,interpolates函数search engine提供了数据。
您提供的第二个代码是您在Matlab中启动的代码。定义参数,然后求解和绘制常微分方程。