使用过滤功能生成缺失数据

时间:2011-06-21 21:10:26

标签: matlab octave

我有通过filter()函数提供的数据向量 - 所述过滤器被构造为发出原始信号的合理近似值,然后用于识别原始数据中的“坏”元素(所述元素是通常由不常见的短时传感器故障引起,并且与良好的数据完全不同)。在确定了这些不良元素之后,我想回去用合理的东西替换它们。

一种方法是用过滤后的输出替换坏值;但是,输出是使用坏值生成的,因此它会产生一些不希望的失真。

理想情况下,我想要一种方法告诉filter()假设坏元素[s]丢失,而且应该生成缺失值[s]的合理插值(例如,基于周围在构造输出时使用的值和过滤器的属性。

我被告知某些工具箱允许插入特殊值(例如, NaN )以指示丢失(但假设是表现良好)的数据。

我查看了Octave过滤器的源代码()并没有明显的突然出现 - 是否有一个特殊值(或其他机制)告诉filter()假设缺少行为良好的数据(并且应该根据需要插入?)

1 个答案:

答案 0 :(得分:6)

插入NaN对此无效。 filter函数非常简单 - 它只是实现了一个IIR过滤器。

如果您的信号是平滑且缓慢变化的,那么您可能只需使用interp1根据两侧的良好数据为不良延伸插值新值即可。

如果您的信号具有更复杂的频谱内容,我认为“Wiener插值”是谷歌的阶段。对于外推,您可以使用linear predictive coding