由于巴特沃斯滤波器具有通频带内最平坦的特性,且在正频率范围内是随频率升高而单调下降的,3DB不变特性等等优良特性使得巴特沃斯滤波器是在数字信号处理中最常用的滤波器之一。所以我们在考虑降噪时首先考虑巴特沃斯低通滤波器。 在使用Butterworth 低通滤波器之前我们简单介绍一下数字滤波器的原理。 首先输入和输出都是数字信号,通过特定的数学算法或者运算关系或是一种数字式处理设备,改变按输入信号所含频率成分的相对比例或滤除某些频率成分的数字器件或者程序。数字滤波器是一个线性时不变系统(LSI)。数字滤波器的设计是已知它的频率特性H(e^jw),求它的系统函数H(z)或单位脉冲响应h(n)。完全实现一个理想频率特性的理想滤波器在理论上确实可以做到,但是由于实际情况的限制,实现起来很困难。所以实际的滤波器是逼近理想滤波器。 滤波器阶数越大越逼近理想滤波器但伴随着运算成本就越大,由于基于WiFi CSI的摔倒检测是一个实时性的检测程序,所以在满足降噪要求时我们尽可能要使得滤波器的阶数更低。 MATLAB 自带函数butter 就是用来设计巴特沃斯滤波器的 。 [B,A] = BUTTER(order,Wn,high) —用来设计高通滤波器 [B,A] = BUTTER(order,Wn,low) designs a lowpass filter.—设计低通滤波器 [B,A] = BUTTER(order,Wn)—如果没有指示types 则表示设计带通滤波器。
其中order为滤波器阶数,wn是自然频率,也称归一化的截止频率。Wn=截止频率x2/采样频率。根据要求设计后的滤波器参数返回为B,A。 得到滤波器系数后,就可以直接用了。y=filter(B,A,x)。
巴特沃斯低通滤波器处理原始信号代码如下:
hfc = 175; %截止频率 lfc = 0; fs = 1000; %采样频率 order = 25; [b,a] = butter(order, hfc/(fs/2)); figure(3) freqz(b,a) dataIn = randn(1000,1); dataOut = filter(b,a,y); figure(4) subplot(2,1,1) plot(y) title(original); axis([0 1000 5 25]); subplot(2,1,2) plot(dataOut) title(afterbutterworth);结果如图: 滤波器的幅频响应和相频响应如下: 巴特沃斯高通滤波器的代码如下:
hfc =300; %截止频率 lfc = 175; fs = 1000; % 采样频率 order = 15; [b,a] = butter(order,hfc/(fs/2),high); figure(3) freqz(b,a) dataIn = randn(1000,1); dataOut = filter(b,a,y); figure(4) subplot(2,1,1) plot(y) title(original); axis([0 1000 5 25]); subplot(2,1,2) plot(dataOut) title(afterbutterworth);结果如图: 高通滤波器的幅频响应: 巴特沃斯带通滤波器代码如下:
hfc =200; lfc = 50; fs = 1000; order = 15; [b,a] = butter(order,[lfc/(fs/2) hfc/(fs/2)]); figure(3) freqz(b,a) dataIn = randn(1000,1); dataOut = filter(b,a,y); figure(4) subplot(2,1,1) plot(y) title(original); axis([0 1000 5 25]); subplot(2,1,2) plot(dataOut) title(afterbutterworth);带通滤波器处理前后后结果对比: 带通滤波器的幅频响应:
通过对比我们可以发现,低通滤波器可以在滤除噪声的前提下很好的保留信号的特征,所以我们选择巴特沃斯低通滤波器。但是由于巴特沃斯滤波器是基于傅里叶变换的,其变换分解的基函数是周期函数。但是由于实际情况下我们所使用的信号是随机信号,所以下节我们采用更适合本信号处理的离散小波变换对CSI信号进行进一步处理。但是尽管巴特沃斯滤波器的性能并不是最好的,但是也是数据处理中必不可少的一环。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:基于Wi-Fi CSI的摔倒检测(三):CSI 数据降噪 https://www.yhzz.com.cn/a/13382.html