Ciobowu曾有帖子https://www.ilovematlab.cn/thread-202931-1-9.html提到如何对低频信号进行滤波,今又提出低频信号滤波出现的问题https://www.ilovematlab.cn/thread-205846-1-1.html,以下给出怎么给出较好的滤波效果。
低频信号实际上是一个相对的概念,这里所讲的低频信号是指今昔对比滤波的信号频率与采样频率之比小于0.05。在https://www.ilovematlab.cn/thread-205846-1-1.html帖子中采样频率是400Hz,而要滤波出1Hz和2Hz的信号,所以1/400或1/200都小于0.05。
不论用FIR滤波器还是用IIR滤波器,当fc/fs(即信号频率与采样频率之比)很小时,在设计滤波器时或滤波器的阶数很大,或滤波器的响应曲线变得很坏,无法得到较好的滤波器输出。在这种情况下可以把信号先降采样,降采样后再进行滤波器设计和滤波,最后把滤波器的输出再上采样,恢复到原始信号的采样频率。以下用帖子https://www.ilovematlab.cn/thread-202931-1-9.html中的数据为例说明。程序有(程序中都有注释,用了该帖子上的数据)
load data_imp
x=data_imp;
fs=400;
time=(0:length(x)-1)/fs;
fc=1;
[p,q]=rat(10*fc/fs)
fs1=fs*p/q; % 求出降采样频率
x1=resample(x, p, q); % 信号降采样
N=length(x1);