2011-06-01 94 views
1

我正在使用Matlab来查找对光谱仪的输出进行去卷积处理以获得原始输入的有效方法。该功能deconvwnr()效果很好,但它介绍了很多,我已经越来越与MATLAB的摆脱正弦式的噪声的内置带阻巴特沃斯滤波器:Matlab中的对称带阻滤波器?

[b,a] = butter(3,[iters-freq,iters+freq],'stop'); recovered = filter(b,a,toBS); 

的问题是,这种过滤器单方面的,定义为

如果x [n]是数组而y [n]是滤波数组,则f:x-> y是单边的iff y [n] = f(x [n]中,x [N-1],X [N-2] ...)

并介绍在光谱仪的峰移位:

shift

因此,我需要使用双边对称滤波器。有没有一种简单的内置方法可以在Matlab中做到这一点?

---另外---有没有真正的好,“它只是工作”,噪声容错解卷积算法呢?

回答

2

所有滤波器在输出中产生的“移位”或“延迟”与滤波器长度一样多的采样数。这是使用filter命令的行为。

为了不输出延迟,您应该过滤一次正向和反向一次(+ shift -shift = 0)。这很容易通过使用filtfilt命令来实现。语法是

filtfilt(b,a,toBS) 

缺点(如果你真的关心这个问题)是有效的过滤器顺序加倍。