【发布时间】:2016-08-03 04:30:32
【问题描述】:
我正在编写一个函数,它应该能够在 a 和 b 之间集成一个函数。问题是该功能仅由具有相应时间点的数据数组提供。
问题是,当一个下限和上限时,我必须剪掉这个时间范围内的数据向量部分——我的问题是,如何做到最有效?
我现在正在做的事情如下:
llim = find(time==lima);
ulim = find(time==limb);
data = data(llim:ulim);
int1 = h/2*(data(1) + data(end) + 2*sum(data(2:end)));
但是根据分析器,前 3 行使用了 50-something %,所以如果可以减少它会很棒。
我也尝试过使用
data = data(time>=lima & time<=limb);
但这并不快。有什么建议吗?
【问题讨论】:
-
你不是说
data = data(time>=lima & time<=limb)吗?lima小于limb对吗? -
也许拆分您尝试的选项?应该没什么区别,但谁知道呢?
data = data(time >= lima); data = data(time <= limb); -
@Dan 你是完全正确的。我只是快速重新输入它说我已经尝试过。
-
@Swier 所以问题是,如果我这样做,那么检查向量中的每个点是否首先大于利马然后小于肢体。但是我的时间向量是排序的,所以一旦我知道了 llim 和 ulim 点,我就知道我想要中间的每个点。
-
@bla 我的数据集很小~1000 个条目,但该函数被调用了很多次~5e6
标签: performance matlab indexing