카테고리 없음
Matlab FIR, IIR fiter 설계 및 simulation 예제
벤치마킹
2013. 1. 26. 17:07
교육 4일차에 직접 짠 Matlab code 이다.
아래 code는 두개의 wave file 을 읽어서 벌 소리를 filtering 하는 filter 를 만들고 ( 계수를 뽑아낸다는) 그래서 filtering 하고 fft 를 통해서 frequency domain 을 관찰하고 sound 로 들어보는
matlab code이다.
%
clear all; close all; fs = 10000; fs1 = 10000; fnm = fs/2; M = 40 ; wn = 1000/fnm; %b = fir1(M, fnm); b = fir1(M,wn); b'
clear all close all [x1, fs1] = wavread('../사운드 필터링 실습 화일/bul_1.wav'); [x2, fs2] = wavread('../사운드 필터링 실습 화일/bulpokpung_1.wav'); M = 50 Ts1 = 1/fs1; fnm1 = fs1/2; N1 = length(x1); t1 = 0:Ts1:(N1-1)*Ts1; subplot(5,1,1), plot(t1,x1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%bul_1.wav%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hertz1=(t1/Ts1)*(fs1/N1); Res = fft(x1); magRes = abs(Res); figure(2) subplot(2,1,1), plot(hertz1(1:N1/3), magRes(1:N1/3)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%bulpokpung_1.wav%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ts2 = 1/fs2; fnm2 = fs2/2; N2 = length(x2); t2 = 0:Ts2:(N2-1)*Ts2; hertz2=(t2/Ts2)*(fs2/N2); Res = fft(x2); magRes = abs(Res); subplot(2,1,2), plot(hertz2(1:N2/3), magRes(1:N2/3)) %x time freq plot % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%bulpokpung_1.wav%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% f = [0 100/fnm2 100/fnm2 400/fnm2 400/fnm2 2800/fnm2 2800/fnm2 1]; a = [0 0 0 0.5 1 1 1 1]; b= fir2(M,f,a); b' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%high pass filtering%%%%%%%%%%%%%%%%%%%%%%%%%% result = filter(b,1,x2); Res = fft(result); magRes = abs(Res); figure(4) subplot(2,1,1), plot(hertz1(1:N2/2), magRes(1:N2/2)) %x time freq plot % soundsc(result,fs2) pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%Low pass filtering%%%%%%%%%%%%%%%%%%%%%%%%%% f = [0 500/fnm2 500/fnm2 1000/fnm2 1000/fnm2 1]; a = [1 1 1 0 0 0]; b= fir2(M,f,a); result = filter(b,1,x2); Res = fft(result); magRes = abs(Res); figure(4) subplot(2,1,2), plot(hertz1(1:N2/2), magRes(1:N2/2)) %x time freq plot % soundsc(result,fs2) pause