close all;                                     % 모든 생성된 창을 닫음 
clear all;                                     % 열려있는 작업영역(workspace)을 모두 비움 
clc;                                           % 명령(command) 창을 비움

wsl=0.2*pi; wsh=0.8*pi;                        % 저지 대역 경계 주파수 설정
wpl=0.35*pi; wph=0.65*pi;                      % 통과 대역 경계 주파수 설정
wcl=(wsl+wpl)/2; wch=(wsh+wph)/2;              % 저역 통과 필터 차단 주파수 계산
wd_tr=min((wpl-wsl),(wsh-wph));                % 천이 대역 폭 계산
N=ceil(11*pi/wd_tr)+1;                         % 창의 길이 설정
n=0:N-1; M=(N-1)/2;                            % 시간축 생성
hd1=(wch/pi)*sinc((wch/pi)*(n-M));             % 저역통과 필터 1의 임펄스 응답 
hd2=(wcl/pi)*sinc((wcl/pi)*(n-M));             % 저역통과 필터 2의 임펄스 응답 
hd=hd1-hd2;                                    % 이상적인 대역 통과 필터 임펄스 응답
w_blkm=blackman(N);                            % 블랙먼창 생성
h=hd'.*w_blkm;                                 % 실제 대역 통과 필터 임펄스 응답
[H w]=freqz(h,[1]);                            % 필터 주파수 응답 계산
L=length(w); dw=pi/L;                          % 주파수축 간격
Hmag=20*log10(abs(H)/max(abs(H)));             % 로그 척도(dB) 크기 응답 계산
Ap=-min(Hmag(wpl/dw+1:wph/dw))                 % 필터 통과대역 감쇠 계산
As=-max(Hmag(wsh/dw+1:length(w)))              % 필터 저지대역 감쇠 계산 
wc1=find(Hmag>=-3,1,'first')/L                 % 하측대역 차단 주파수 계산
wc2=find(Hmag>=-3,1,'last')/L                  % 상측대역 차단 주파수 계산

subplot(2,2,1);                                % 2행 2열 분할 그림 창의 1번 창
stem(n,hd); axis([0 75 -0.5 0.5]);             % 이상적인 임펄스 응답을 그림
title('\bf{이상적인 임펄스 응답}');             % 그림 제목
subplot(2,2,2);                                % 2행 2열 분할 그림 창의 2번 창
stem(n,w_blkm); axis([0 75 -0.1 1.1]);         % 블랙먼창을 그림
title('\bf{블랙먼창}');                         % 그림 제목
subplot(2,2,3);                                % 2행 2열 분할 그림 창의 3번 창
stem(n,h); axis([0 75 -0.5 0.5]);              % 실제 임펄스 응답을 그림
title('\bf{실제 임펄스 응답}');                 % 그림 제목
xlabel('\bf{F}'); grid on;                     % x축 라벨 및 그리드 표시 
subplot(2,2,4);                                % 2행 2열 분할 그림 창의 4번 창
plot(w/(2*pi),Hmag); axis([0 0.5 -120 10]);    % 피터 크기 응답(dB)을 그림 
title('\bf{필터 크기 응답 응답}');              % 그림 제목
xlabel('\bf{F}'); grid on;                     % x축 라벨 및 그리드 표시 

