2011-09-05 72 views
3

般的插值这是一个很小的事情,但现在已经被困扰了我一段时间,所以我想我应该让群众解决开始:)“近邻”,在MATLAB

我有时间戳矩阵和相应的逻辑值(或1/0),即

of = [-inf 0 10 15 190 inf; 1 0 0 1 1 0]' 

和另一个时间向量,例如

t = 0:0.1:1e3; 

或什么的,你明白了吧:)

现在我该怎样(读:你会)间/推断在of逻辑信息来源,因此在t时间戳相匹配,但与插值逻辑总是假设最后的或当前的值,而不是未来的值?

不知道如果是有道理的,但这里是给oft2

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]' 

这不正是我想要的。

回答

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,它适合您的条件,因为您不希望“最近”的邻居,但第一个较低或相同的邻居(据我了解)。因此,内插时间戳索引的简单截断会给出结果。

+0

F ***我是多数民众赞成的东西! :D 有些时候你可能只是迷失在复杂性中,我想这就是发生在这里:) 此外,如果重新考虑问题,infs可以忽略,所以这将起作用。 – Juhl