使用`interp1`作为查找函数

时间:2016-01-10 13:37:56

标签: matlab

我正在使用interp1从向量calculate_a1中查找值并在ode45中使用它们。

我有3个不同的功能文件来实现这一目标。定义了我的方程的system1system1solver解决了函数,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作为查找函数而不进行实际插值?

提前致谢!

1 个答案:

答案 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   包含一组不同的一维样本值。

我希望我有所帮助