본문 바로가기

CMSIS DSP

CMSIS FIR 필터 함수와 매트랩을 사용하여 Band Pass Filter 설계

CMSIS FIR 필터 함수를 이전 예제인 Low Pass Filter가 아닌 9.5~10.5KHz Band Pass Filter로 만들어서 Frequency Bin Example의 데이터에 적용해봤습니다. CMSIS FIR 인스턴스는 arm_fir_init_f32 함수를 사용하여 초기화할 때 입력한 필터 계수에 따라 다중 Band Pass Filter(BPF)를 포함한 여러가지 필터로 동작할 수 있습니다. 전 허용 주파수로 9.5~10.5KHz를 갖는 BPF를 만들기 위해 아래와 같은 매트랩 코드를 사용했습니다.



이것을 배열로 만들어 arm_fir_init_f32 함수의 pCoeffs 매개변수에 입력해 주면 됩니다. 그리고 Frequency Bin Example에서 FFT를 수행하기 전에 arm_fir_f32 함수를 사용하여 필터링한 결과입니다. 비교를 위해 원래 예제의 FFT 결과를 우측 상단에 추가했습니다.



허용 주파수를 9.99~10.01KHz로 해도 결과는 똑같았습니다. arm_fir_init_f32 함수의 numTaps 매개변수를 조절하여 필터의 차수를 높이면 더 정밀한 BPF 만들 수 있지 않을까 생각해 봤지만, 시도는 해보지 않았습니다.