我试图在Matlab中解决ODE,我遇到以下问题: 我的代码如下:
xinit=[0.19;25;0;7];
t=0:768:76800; %% 101 cells
[t1,y]=ode45(@Model_Bio,t,xinit);
在函数@Model_Bio中,我有一个参数,我需要读取每个时间步的相应值(101个值)! 所以,我的@Model_Bio在某种程度上如下:
load 'mydata'
a=mydata;
.....
问题在于,当我执行ode45(@ Model_Bio,t,xinit)时,它会使用自动时间步骤调用我的函数(例如50次!)我的问题是我无法为每个函数分配值我的时间步(101)! 另外,我认为改变颂歌的时间步骤与我的101步骤相同并不是一个好主意! 任何帮助我的人都非常感激!
答案 0 :(得分:1)
好像你需要提供一个数据包装器来插入任意t,例如
my_interp = @(t)interp1(my_data_t,my_data_x,t)
http://se.mathworks.com/help/matlab/ref/interp1.html
然后根据my_interp
实现您的RHS(@Model_Bio)