这是一件很小的事情,但现在已经困扰了我一段时间,所以我想我会让人群解决开始:)
我有一个带时间戳和相应逻辑值(或1/0)的矩阵,即
of = [-inf 0 10 15 190 inf; 1 0 0 1 1 0]'
和另一个时间向量,例如
t = 0:0.1:1e3;
或者其他什么,你明白了这一点:)
现在我如何(阅读:你会)在of
中对逻辑信息进行内部/外推,使其与t
中的时间戳匹配,但内插逻辑总是假设最后一个或当前值,不是未来的?
不知道这是否有意义,但这是给定of
和t2
t2 = [0 5 14 16]
output = [0 0 10 15; 0 0 0 1]'
其中output
的第一列是插值中使用的of
的时间。如果我使用interp1
和'最近'算法,它将给出
interp1(of(:,1), of, t2, 'nearest')
output = [0 10 15 15; 0 0 1 1]'
这不是我想要的。
答案 0 :(得分:4)
假设您的矢量已经排序,您可以尝试一下,这似乎适用于您的示例,尽管我没有广泛测试它:
of=[-inf 0 10 15 190 inf; 1 0 0 1 1 0]';
t2 = [0 5 14 16];
index=floor(interp1(of(:,1),(1:size(of,1))',t2'));
output=of(index,:);
希望它有所帮助。
interp1使用的默认方法是linear
,它最符合您的条件,因为您不想要“最近”的邻居,而是第一个较低或相等的邻居(据我所知)。因此,插值时间戳索引的简单截断将为您提供结果。