Chapter 6 필터링
학습목표 이번장에서다루게되는내용은다음과같습니다. 이번장의학습목표 1) 필터의종류에대해이해한다. 2) FIR과 IIR 필터의특성에대해이해한다. 3) FIR 필터설계에대해이해한다. 4) IIR 필터설계에대해이해한다. 5) Matlab을이용한예제를통해 Chebyshev 필터를이해한다. 6) Matlab을이용한예제를통해창함수를이용한필터링에대해이해한다. 7) Matlab을이용한예제를통해주파수분석에대해이해한다.
필터의종류 (1) 주파수선택특성에따라구분. 저역통과필터 (low pass filter : LPF) 고역통과필터 (high pass filter : HPF) 대역통과필터 (band pass filter : BPF) 대역저지필터 (band rejection filter : BRF)
필터의종류 (2) 필터의형태
필터의종류 (3) 이상적인저역통과필터 (a) 주파수응답, (b) 임펄스응답
필터의종류 (4) A B C D E F ω p δ 1 ω S δ 2 f S N : 통과대역주파수 : 통과대역리플크기 : 저지대역주파수 : 저지대역리플크기 : 샘플링주파수 : 필터의차수 저역통과필터의진폭응답
디지털필터의설계 (a) 원하는필터의사양결정 : 진폭응답 ( 통과대역, 천이대역, 저지대역 ), 위상응답 ( 위상, 군지연 ), 샘플링주파수와양자화비트수등결정 (b) 전달함수결정 : 필터의계수값을결정 (c) 필터의구조결정 : FIR인경우 : 직접형인횡단구조와격자구조가있음. IIR의경우 : 직접형, 종속형, 병렬형구조있음. (d) 유한어장 (word length) 영향분석 (e) 필터를소프트웨어나하드웨어로구현 : 고속의디지털신호처리전용처리기를이용한디지털필터를구현.
FIR 과 IIR 필터특성 원하는필터의사양이결정 FIR 필터혹은 IIR 필터로설계할지결정.
FIR 필터의설계 FIR 필터설계방법. 창 (window) 함수방법. 주파수샘플링방법.
FIR 필터의설계 창함수방법 (1) 창 (window) 함수방법 무한임펄스응답을갖는이상적인 LPF 의전달함수에정해진 window 함수를컨볼루션하여원하는특성의전달함수를얻음. 시간영역에서는이상적 LPF 의임펄스응답에창함수를곱하여운하는임펄스응답을얻고, 얻어진임펄스응답을필터의계수값으로정함. 창함수의종류에따라필터의특성은달라짐.
FIR 필터의설계 창함수방법 (2) 창함수를이용하는방법
FIR 필터의설계 창함수방법 (3)
FIR 필터의설계 창함수방법 (4) 창함수의시간특성
FIR 필터의설계 창함수방법 (5) 구형창함수에대한감쇠특성
FIR 필터의설계 창함수방법 (6) 해밍창함수에대한감쇠특성
FIR 필터의설계 창함수방법 (7) 해닝창함수에대한감쇠특성
FIR 필터의설계 창함수방법 (8) 주봉 (main lobe) 측봉 (side lobe) 블랙맨창함수에대한감쇠특성
FIR 필터의설계 창함수방법 (8) 블랙맨창 : 측봉의감쇠특성은우수하지만주봉의폭이커서천이대 역의폭이상대적으로넓어짐, 그러나통과대역의맥동을충분이줄 일수있음. 구형창, 해밍창 : 블랙맨창에비해저지대역의감쇠특성이우수하지는않지만상대적으로측봉의폭이좁아천이대역폭이좁음, 그러나통과대역의맥동이커짐. 측봉의크기를충분이감쇠시키면저지대역의주파수특성을좋게할수있음.
FIR 필터의설계 - 주파수샘플링방법 (1) 필터의구성이주파수영역에서주어진경우주파수축상에서 N 개의샘플치를선택하여역이산푸리에변환을수행함으로서필터의임펄스응답을구하는방법 DFT 의정의식
FIR 필터의설계 - 주파수샘플링방법 (2) 샘플치가충분하지않으면통과대역과저지대역의맥동이심하게됨을알수있음
IIR 필터의설계 IIR 필터설계방법 : 원하는특성의아날로그필터를먼저설계한후디지털필터로변환시키는방법. 임펄스불변법 (Impulse Invariance) 쌍 1 차 Z 변환 (Bilinear Z transformation : BZT)
IIR 필터의설계 임펄스불변법 (1) 아날로그필터의임펄스응답에대응하는디지털필터의임펄스응답을구하여 Z 영역에서필터의전달함수를구함. 아날로그필터의전달함수가 1 식과같이주어진경우 임펄스응답은 2 식과같다. 1 2 p k 여기서 : 아날로그필터의극점.
IIR 필터의설계 임펄스불변법 (2) 1 1 식에대응하는디지털필터의임펄스응답을구하면 2 식과같다. 2 2 식을 Z 변환을이용하여디지털전달함수를구하면 샘플링시점에서아날로그필터와디지털필터의임펄스특성동일 샘플링주파수를충분히크게할필요가있음.
IIR 필터의설계 쌍 1 차 Z 변환법 쌍 1 차 Z 변환법은아날로그필터의전달함수 H(s) 를쌍 1 차변환을사용하여디지털필터의전달함수 H[z] 로변환하는방법. S 평면에서 Z 평면으로의매핑은 1 에의해이루어짐. 1 1 식을쌍 1 차변환이라함. T : 샘플링주파수 아날로그필터의전달함수 s 대신 1 식을대입하여디지털필터의전달함수를구할수있음.
Matlab 을이용한필터링 I IIR 필터를이용한필터링을실습해보도록하자. 다음과같은조건을갖는디지털필터를이용하여 1kHz, 2kHz, 4kHz 의 sin 신호가합성된신호를대상으로필터링을수행해보자. 샘플링주파수 : 10kHz 필터종류 : 제 1형 Chebyshev 고역통과필터 저지대역주파수 : 2.5kHz 통과대역주파수 : 3kHz 저지대역리플 : 60dB 통과대역리플 : 0.1dB
Matlab 을이용한필터링 I Fs=10000; % 샘플링주파수 N=200; % 샘플개수 t=[1:n]/fs; % 시간축값 w=[0:n-1]/n*fs; % 주파수축값 x=sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*4000*t); % 입력신호 s=abs(fft(x)); % 입력신호에대한주파수특성 %-------------- 필터설계 ------------------------- ws=2500/(fs/2); wp=3000/(fs/2); Rp=0.1; Rs=60; [Nth, Wn]=cheb1ord(wp,ws,Rp,Rs); % chebyshev 필터의차수와차단주파수설정 B, A]=cheby1(Nth,Rp,Wn,'high'); % 필터설계 H=freqz(B,A,w,Fs); % 주파수특성 x_filtered=filter(b,a,x); % 필터링하기
Matlab 을이용한필터링 I % 그림출력 figure plot(w,abs(h)); % 필터의주파수특성 title(' 제 1 형 Chebyshev 고역통과필터의주파수특성 '); figure subplot(211); plot(x); % 입력신호출력 title(' 입력신호 '); subplot(212); plot(x_filtered); % 필터링된신호 title(' 필터링된신호 '); figure subplot(211); plot(s); % 입력신호출력 title(' 입력신호의주파수특성 '); subplot(212); plot(w,abs(fft(x_filtered))); % 필터링된신호 title(' 필터링된신호의주파수특성 ');
Matlab 을이용한필터링 I 제 1 형 Chebyshev 고역통과필터의주파수특성
Matlab 을이용한필터링 I 입력신호와필터링된신호
Matlab 을이용한필터링 I 필터링전과후신호의주파수스펙트럼비교
Matlab 을이용한필터링 II 창함수법을이용한 FIR 필터를설계하고이를적용해필터링을수행해보자. 입력신호 : 1kHz, 2kHz, 4kHz 신호가섞인신호 ( 신호길이 : 500) 샘플링주파수 : 10kHz 필터조건 : 3kHz 차단주파수의저역통과필터 (10 차 )
Matlab 을이용한필터링 II Fs=10000; % 샘플링주파수 N=500; % 샘플개수 t=[1:n]/fs; % 시간축값 w=[0:n-1]/n*fs; % 주파수축값 x=sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*4000*t); % 입력신호 s=abs(fft(x)); % 입력신호에대한주파수특성 wn=3000/(fs/2); % 차단주파수설정 fcoeff=fir1(10,wn); % 필터의계수구하기 [H W]=freqz(fcoeff,1,100); % 필터에대한주파수특성 w=w/pi*(fs/2); x_filtered=filter(fcoeff,1,x);% 필터링하기 % 그림출력 figure plot(w,abs(h)); % 필터의주파수특성 title('fir 저역통과필터주파수특성 ');
Matlab 을이용한필터링 II figure subplot(211); plot(x); % 입력신호출력 title(' 입력신호 '); subplot(212); plot(x_filtered); % 필터링된신호 title(' 필터링된신호 '); ww=[1:size(x,2)]/size(x,2)*fs; figure subplot(211); plot(ww,s); % 입력신호출력 title(' 입력신호의주파수특성 '); subplot(212); plot(ww,abs(fft(x_filtered))); % 필터링된신호 title(' 필터링된신호의주파수특성 ');
Matlab 을이용한필터링 II FIR 저역통과필터주파수특성
Matlab 을이용한필터링 II 입력신호와필터링된신호
Matlab 을이용한필터링 II 필터링전과후신호의주파수스펙트럼비교
Matlab 을이용한필터링 III 실습 9 의나머지세 Note 에대해이름을알아보도록하자. 그림에서주파수는 250Hz 이상이므로 250Hz 차단주파수를갖는고역통과필터를원신호에적용하여필터링을수행하고주파수분석을통하여나머지 Note 들에대해어떤건반이눌렸는지확인하도록하자.
Matlab 을이용한필터링 III fid=fopen('sound.raw','r'); x=fread(fid,'int16'); N=2048; Fs=8000; deltaf=1/n*fs; freq=[0:n-1]/n*fs; % 주파수좌표값 t=[1:n]/fs; % 시간축값 w=[0:n-1]/n*fs; % 주파수축값 s=abs(fft(x)); % 입력신호에대한주파수특성 %-------------- 필터설계 ------------------------- ws=200/(fs/2); wp=250/(fs/2); Rp=0.1; Rs=60; [Nth, Wn]=cheb1ord(wp,ws,Rp,Rs); % chebyshev 필터의차수와차단주파수설정
Matlab 을이용한필터링 III [B, A]=cheby1(Nth,Rp,Wn,'high'); % 필터설계 H=freqz(B,A,w,Fs); % 주파수특성 x_filtered=filter(b,a,x);% 필터링하기 % 그림출력 figure plot(w,abs(h)); % 필터의주파수특성 title(' 제 1 형 Chebyshev 고역통과필터의주파수특성 '); figure subplot(211); plot(x); % 입력신호출력 title(' 입력신호 '); subplot(212); plot(x_filtered); % 필터링된신호 title(' 필터링된신호 ');
Matlab 을이용한필터링 III figure subplot(211); plot(s); % 입력신호출력 title(' 입력신호의주파수특성 '); subplot(212); plot(abs(fft(x_filtered))); % 필터링된신호 title(' 필터링된신호의주파수특성 '); note1=x_filtered(2760+500:2760+500+n-1); % Note1의데이터 note2=x_filtered(6070+500:6070+500+n-1); % Note2의데이터 note3=x_filtered(11001+500:11001+500+n-1); % Note3의데이터 note4=x_filtered(14392+500:14392+500+n-1); % Note3의데이터 note5=x_filtered(21152+500:21152+500+n-1); % Note3의데이터 note6=x_filtered(24592+500:24592+500+n-1); % Note3의데이터
Matlab 을이용한필터링 III X1=abs(fft(note1)); X2=abs(fft(note2)); X3=abs(fft(note3)); X4=abs(fft(note4)); X5=abs(fft(note5)); X6=abs(fft(note6)); [Y1, I1]=max(X1(1:N/2)); [Y2, I2]=max(X2(1:N/2)); [Y3, I3]=max(X3(1:N/2)); [Y4, I4]=max(X4(1:N/2)); [Y5, I5]=max(X5(1:N/2)); [Y6, I6]=max(X6(1:N/2));
Matlab 을이용한필터링 III fprintf(1,'\n 첫번째 Note : %.2f',(I1-1)*deltaf); fprintf(1,'\n 두번째 Note : %.2f',(I2-1)*deltaf); fprintf(1,'\n 세번째 Note : %.2f',(I3-1)*deltaf); fprintf(1,'\n 네번째 Note : %.2f',(I4-1)*deltaf); fprintf(1,'\n 다섯번째 Note : %.2f',(I5-1)*deltaf); fprintf(1,'\n 여섯번째 Note : %.2f',(I6-1)*deltaf);
Matlab 을이용한필터링 III 필터의주파수특성
Matlab 을이용한필터링 III 입력신호와필터링된신호
Matlab 을이용한필터링 III 입력신호와필터링된신호의주파수비교
Matlab 을이용한필터링 III 출력결과
Matlab 을이용한필터링 III 출력결과에대한각 Note
Matlab 을이용한필터링 III 각 Note 별이름
평가하기 1. 아래와같은 Matlab 을이용한필터링 II 에서사용한창은무엇인가? 또한다른창을 사용하기위해서는어떤부분을수정하여야하는가? Fs=10000; % 샘플링주파수 N=500; % 샘플개수 t=[1:n]/fs; % 시간축값 w=[0:n-1]/n*fs; % 주파수축값 x=sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*4000*t); % 입력신호 s=abs(fft(x)); % 입력신호에대한주파수특성 wn=3000/(fs/2); % 차단주파수설정 fcoeff=fir1(10,wn); % 필터의계수구하기 [H W]=freqz(fcoeff,1,100); % 필터에대한주파수특성 w=w/pi*(fs/2); x_filtered=filter(fcoeff,1,x);% 필터링하기 % 그림출력 figure plot(w,abs(h)); % 필터의주파수특성 title('fir 저역통과필터주파수특성 ');
평가하기 1. 해밍창 Fs=10000; % 샘플링주파수 N=500; % 샘플개수 t=[1:n]/fs; % 시간축값 w=[0:n-1]/n*fs; % 주파수축값 x=sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*4000*t); % 입력신호 s=abs(fft(x)); % 입력신호에대한주파수특성 wn=3000/(fs/2); % 차단주파수설정 fcoeff=fir1(10,wn); % 필터의계수구하기 [H W]=freqz(fcoeff,1,100); % 필터에대한주파수특성 w=w/pi*(fs/2); x_filtered=filter(fcoeff,1,x);% 필터링하기 % 그림출력 figure plot(w,abs(h)); % 필터의주파수특성 title('fir 저역통과필터주파수특성 ');
평가하기 1. 입출력관계가다음과같을때시스템각각에대해 FIR 시스템인지 IIR 시스템인지판별하시오. System 1 : y[n]=0.5x[n]+0.27x[n-1]+0.77x[n-2] System 2 : y[n]=0.45x[n]+0.5x[n-1]+0.45x[n-2]+0.53y[n-1]-0.46y[n-2] 2. 다음그림은구형창과해밍창의주파수응답을보여주고있다. 각각을비교설명하시오.
평가하기 1. System 1 : FIR 시스템, System 2 : IIR 시스템 2. 구형차과해밍창은아래그림의 A 값은주엽의대역폭이며대역폭이크면완만한특성을갖게된다. 즉, 원신호를더잘표시할수있는측면에서는구형창이더좋다고볼수있고 B 는주파수누설에대한특성으로작은값을갖는해밍창이성능이우수함을알수있다. B A