MATLAB 을 사용하여 신호 처리를 하다 보면 필터를 설계하는 경우가 있고 필터의 게인을 조절해야 되는 경우가 있습니다. 보통 디지털 필터 설계를 할 때는 pass band 의 게인을 1 (0 dB) 로 맞춰 주게 되는데 오늘은 이 방법에 대해서 소개를 하려 합니다.

MATLAB 을 사용하여 필터 설계하고 코드를 생성하거나 모델을 만들때는 fdatool (Filter Design & Analysis Tool) 을 주로 사용하게 되고 필터를 확인하고 싶을때는 fvtool(Filter Visualization Tool) 을 주로 사용합니다.

FIR 필터 계수가 CoeffV 인 경우 MATLAB 명령창에 fvtool(CoeffV,1) 라고 명령하면 아래와 같은 Filter Visualization Tool 이 실행되고 해당 필터 계수에 대한 정보들을 확인 할 수 있습니다.

또한 Analysis -> Analysis Parameters 를 선택하면

아래와 같이 Analysis Parameters 창이 나타나고 “Normalize Magnitude to 1 (0 dB)” 를 체크하고 적용하면

아래와 같이 pass band 의 게인이 1 로 설정이 되는 것을 확인 할 수 있습니다.

그런데 이러한 설정은 실제 값이 바뀌는 것이 아닌 그래프의 형태만 바뀌는 것입니다. 따라서 실제 필터의 게인을 1 (0 dB) 로 설정하기 위해서는 필터의 게인을 알아낸 후 scaling factor 값을 구해서 해당 값으로 필터 Coefficient 를 scaling 해 줘야 합니다. 이러한 작업을 하는 코드는 아래와 같습니다.

[h, w] = freqz(num, den); % frequency response of (num, den)

scale = 1/max(abs(h)); % scaling factor

numScaled = num*scale;

fvtool(numScaled, den) 명령을 통해 해당 필터의 magnitude response 를 확인해 보면 pass band 의 게인이 1 (0 dB) 로 맞춰진 것을 확인 할 수 있습니다.



+ Recent posts