我正在使用interp1
从向量calculate_a1
中查找值并在ode45
中使用它们。
我有3个不同的功能文件来实现这一目标。定义了我的方程的system1
,system1solver
解决了函数,calculate_a1
定义了参数a1。
system1solver
定义如下:
tStep = linspace(0,25,26);
alpha = calculate_a1();
%% Solver
sol = ode45(@(t,x)system1(t,x,tStep,alpha),tStep,IC);
a1
中的system1
一词如下:
a1 = interp1(tStep,alpha,t)
我的问题是,每次插值interp1
都使用值calculate_a1
。这意味着虽然我想在每25个时间点之后更改a1
,但它会在interp1
的每25次迭代后发生变化。显然,这导致我的模型非常错误!有没有办法可以使用interp1
作为查找函数而不进行实际插值?
提前致谢!
答案 0 :(得分:0)
我知道你的问题是你使用查找值作为时间点数量的iterration数。
这是Matlab网站上的链接,显示了intepr1的工作原理
interp1 1-D data interpolation (table lookup)
vq = interp1(x,v,xq)返回1-D函数的插值 使用线性插值的特定查询点。矢量x包含 样本点,v包含相应的值v(x)。 向量xq包含查询点的坐标。
如果您有多组数据在同一点采样 坐标,然后您可以将v作为数组传递。每列数组v 包含一组不同的一维样本值。
我希望我有所帮助