bandpass带通滤波详解

bandpass带通滤波详解

      • 基本使用
      • 适用范围
      • 注意事项
      • 原理解释

基本使用

先上代码,下面是带通滤波器在matlab中的使用

	function [ pc ] = m_bandpass( pc )	
	    freq    = [0.1 0.5];
	    fs= 50;
	    % Fa=Fs/2,Fa是分析频率
	    [b,a]   = butter(3,freq/(fs/2),'bandpass');
	    pc      = filter(b,a,pc);
	end

freq中设置的是滤波频率范围。
其中butter函数是求Butterworth数字滤波器的系数,在求出系数后对信号进行滤波时用filter函数。

适用范围

带通滤波器主要可以使用在需要保留的波的频率在一定的范围内,用于去除周围的噪声,可以起到良好的效果。下图是本人对声波测呼吸得到的波形进行带通滤波后得到的效果,可以使得波形更平滑。
bandpass带通滤波详解_第1张图片

注意事项

  1. 在滤波器中的fs 即采样率要设置正确,比如波形中的点一秒内有n个,则采样率为n。
  2. freq的设置 即低频率与高频率的设置,比如正常人的呼吸为一分钟16-20次,则低频率为16/60=0.27HZ,高频率为20/60=0.33HZ,频率就是单位时间内完成周期性变化的次数。

原理解释

Y = FILTER(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母
整个滤波过程是通过下面差分方程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)-a(2)*y(n-1) - a(3)*y(n-2) + … + a(nb+1)*y(n-nb)
eg:

	a = [1 2];
	b = [2 3];
	x = [1 2 3 4 5 6];
	y = filter(b, a, x)
	y =
	2 3 6 5 12 3
	下面给出具体的计算过程如下:
	a(1)y(1) = b(1)x(1); %可以求出y(1)
	a(1)y(2) = b(1)x(2)+b(2)x(1) –a(2)y(1); %可以由y(1)求出y(2)
	a(1)y(3) = b(1)x(3)+b(2)x(2)-a(2)y(2); %可以由y(2)求出y(3)
	a(1)y(4) = b(1)x(4)+b(2)x(3)-a(2)y(3); %可以由y(3)求出y(4)
	a(1)y(5) = b(1)x(5)+b(2)x(4)-a(2)y(4); %可以由y(4)求出y(5)
	a(1)y(6) = b(1)x(6)+b(2)x(5)-a(2)y(5); %可以由y(5)求出y(6)

求到的y(n) (n=1···6)则是滤波后的返回序列

你可能感兴趣的:(无线感知)