我正在使用Matlab来寻找有效的方法来对光谱仪的输出进行去卷积,以获得原始输入。函数deconvwnr()工作得很好,除了它引入了很多正弦噪声,我已经用matlab的内置带阻巴特沃斯滤波器去除了这些噪声:
[b,a] = butter(3,[iters-freq,iters+freq],'stop'); recovered = filter(b,a,toBS);
问题是这个过滤器是片面的,定义如下
如果xn是数组,yn是过滤数组,f:x->y是单边的当且仅当yn = f( xn,xn-1,xn-2...)
并引入了分光计峰值的移位:
因此,我需要使用一个双侧对称过滤器。在Matlab中有没有一种简单的内置方法可以做到这一点?
-或者-有没有真正好的,“它就是工作”的,容忍噪声的去噪算法?
发布于 2011-06-01 19:12:05
所有滤波器在输出中产生与滤波器长度一样多的采样数的“移位”或“延迟”。这就是使用filter
命令时的行为。
为了在输出中没有延迟,您应该向前和向后过滤一次(+shift -shift =0)。这可以使用filtfilt
命令轻松实现。语法是
filtfilt(b,a,toBS)
缺点(如果你真的关心这一点的话)是有效的过滤顺序加倍。
https://stackoverflow.com/questions/6205708
复制相似问题