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) 로 맞춰진 것을 확인 할 수 있습니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB 그래프 사이 공간 색칠하기 fill, patch, area (742) | 2019.04.30 |
---|---|
MATLAB 그래프 내에 그래프 넣기 (0) | 2019.04.13 |
MATLAB 스트럭처 정렬 방법 (0) | 2019.03.27 |
MATLAB 브러시, 데이터 커서 기능을 사용하여 데이터 가공하기 (0) | 2019.03.04 |
MATLAB 을 사용하여 원의 방정식에 대해 Gradient Descent 방법 적용 실험 (0) | 2019.01.31 |
병렬 저항 계산 MATLAB 코드 (0) | 2019.01.06 |
MATLAB 을 사용하여 원의 방정식에 대해 가우스-뉴턴 방법 적용 실험 (0) | 2019.01.03 |
MATLAB si-prefix string 표현 (0) | 2018.12.29 |
댓글