-2

对于一个项目,我需要了解 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); 

所以问题是:发生了什么?我还需要将 S 绘制在与 X 和 R 相同的图中。我该怎么做?

我感谢您的帮助!

4

1 回答 1

0

这是一个非常基本的 Matlab 问题。关于您请求的主题大量信息。我认为这些幻灯片将帮助您走上正确的道路。

但是,快速解释一下;您提供的第一个代码是描述您的常微分方程的函数。此函数必须始终为x' = f(t,x,...). 这里t是时间,x也是状态。在状态之后(在点的位置...),您可以定义其他输入参数,例如在您的 ode 函数中进行。此外,该interp1函数对提供的数据进行插值。

您提供的第二个代码是您在 Matlab 中启动的代码。定义参数,然后求解并绘制常微分方程。

如果您还有其他问题,我建议您首先尝试使用搜索引擎找到答案。

于 2015-10-07T07:23:00.460 回答