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

n=-30:30;                                      % 시간축 설정
N=400; df=1/N; f=df*[-N/2:N/2-1];              % 주파수축 설정
fc=0.2;                                        % 차단 주파수 설정
hd=2*fc*sinc(2*fc*n);                          % 이상적인 필터의 임펄스 응답 hd[n]
wd=zeros(1,31); wd(6:26)=1;                    % 길이가 절반인 사각창 wd[n]
wb=conv(wd,wd)/21;                             % 삼각창 wb[n]=wd[n]*wd[n]
hb=hd.*wb;                                     % 삼각창을 씌운 임펄스 응답 hb[n] 
Hd=zeros(1,N); Hd(N/2-0.2*N:N/2+0.2*N)=1;      % 이상적인 필터의 주파수 응답 Hd(Omega)
Wb=21*(sinc(21*f)./sinc(f)).^2;                % 삼각창의 스펙트럼 Wb(Omega)
Hdf=fft(Hd);                                   % Hd(Omega)에 대한 DFT 수행 
Wbf=fft(Wb);                                   % Wb(Omega)에 대한 DFT 수행 
Hbf=Hdf.*Wbf;                                  % Hb(Omega)에 대한 DFT 수행 
Hb=fftshift((1/N)*ifft(Hbf));                  % IDFT 수행 및 재정렬 

subplot(2,1,1);                                % 2행 1열 배열 그림창의 1번 창
stem(n(6:56),hb(6:56));                        % 임펄스 응답 hb[n]을 그림  
title('\bf{삼각창을 씌운 임펄스 응답}');         % 그림 제목
xlabel('\bf{n}'); grid on;                     % x축 라벨 및 그리드 표시 
subplot(2,1,2);                                % 2행 1열 배열 그림창의 2번 창
plot(f,Hb);                                    % 주파수 응답 Hb(Omega)을 그림
title('\bf{삼각창을 씌운 주파수 응답}');         % 그림 제목
xlabel('\bf{F}'); grid on;                     % x축 라벨 및 그리드 표시  