&引用;“最近邻居”-MATLAB中的类插值
这是一件小事,但现在已经困扰了我一段时间,所以我想我应该让人群解决开始:) 我有一个带有时间戳和相应逻辑值(或1/0)的矩阵,即 和另一个时间向量,例如&引用;“最近邻居”-MATLAB中的类插值,matlab,interpolation,Matlab,Interpolation,这是一件小事,但现在已经困扰了我一段时间,所以我想我应该让人群解决开始:) 我有一个带有时间戳和相应逻辑值(或1/0)的矩阵,即 和另一个时间向量,例如 t = 0:0.1:1e3; 不管怎样,你明白了:) 现在,我(读:你会)如何对的中的逻辑信息进行内插/外推,使其与t中的时间戳相匹配,但内插逻辑总是假定最后一个或当前值,而不是未来值 不知道这是否有意义,但这里是给定的的和t2的预期输出 t2 = [0 5 14 16] output = [0 0 10 15; 0 0 0 1]' 其中,
t = 0:0.1:1e3;
不管怎样,你明白了:)
现在,我(读:你会)如何对的中的逻辑信息进行内插/外推,使其与t
中的时间戳相匹配,但内插逻辑总是假定最后一个或当前值,而不是未来值
不知道这是否有意义,但这里是给定的的和t2的预期输出
t2 = [0 5 14 16]
output = [0 0 10 15; 0 0 0 1]'
其中,输出的第一列
是插值中使用的的时间。如果我使用interp1
和“最近”算法,它将给出
interp1(of(:,1), of, t2, 'nearest')
output = [0 10 15 15; 0 0 1 1]'
这并不完全是我想要的。假设向量已排序,您可以尝试这样做,这似乎适用于您的示例,尽管我没有对其进行广泛测试:
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使用的默认方法是线性
,它最适合您的情况,因为您不需要“最近的”邻居,而是第一个较低或相等的邻居(据我所知)。因此,只需对插值时间戳索引进行简单的截断即可得到结果。F***me就是这样有时你可能会迷失在复杂性中,我想这就是这里发生的:)而且,如果你重新思考这个问题,infs可以被忽略,所以这是可行的。
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,:);