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

b=3;                                         % 양자화기의 비트 수 설정
t=0:0.01:1;                                  % 한 주기에 100개의 샘플을 취함
x=sin(2*pi*t);                               % 샘플링된 정현파 신호 x[n] 생성 
R=max(x)-min(x);                             % 신호 값의 전 구간 R 계산
L=2^b;                                       % 양자화 레벨의 수 L 계산   
dq=R/L;                                      % 양자화 간격 delta0 계산
xq=dq*round(x/dq);                           % 반올림으로 양자화한 신호 xQ[n] 생성 
eq=xq-x;                                     % 양자화 오차 e[n] 계산 
snr=10*log10(sum(x.*x)/sum(eq.*eq));         % 양자화 잡음의 SNR 계산   

subplot(2,1,1);                              % 2행 1열 분할 그림창의 1번 창
plot(t,x,'r');                               % 정현파 신호 x(t) 그림 
hold on;                                     % 현재 창 유지해 연속으로 그림 
stem(t,xq);                                  % 양자화된 신호 xQ[n] 그림
title('양자화기의 출력 신호 x_Q[n]');         % 그림 제목          
subplot(2,1,2);                              % 2행 1열 분할 그림창의 2번 창
stem(t,eq);                                  % 양자화 오차 e[n] 그림
title('양자화 오차 e[n]');                    % 그림 제목          

fprintf('양자화기의 SNR은 %.4f \n',snr);      % 명령창에 양자화기의 SNR 값 표시