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

t=[0:0.01:2];                                     % 시간축 설정(0에서 2까지 0.01 간격) 
signal=cos(2*pi*t);                               % 정현파 신호 생성
nu=rand(size(signal))-0.5;                        % 균일분포 잡음(평균=0, 분산=1/12) 생성 
ng=randn(size(signal));                           % 정규분포 잡음 (평균=0, 분산=1) 생성 
snr1=15; snr2=10;                                 % 원하는 SNR 설정
a1=std(signal)/std(nu)/(10^(snr1/20));            % 크기 a 결정(균일분포 백색잡음)
a2=std(signal)/std(ng)/(10^(snr2/20));            % 크기 a 결정(정규분포 백색잡음)
x1=signal+a1*nu;                                  % 균일분포 백색잡음이 섞인 신호 생성 
x2=signal+a2*ng;                                  % 정규분포 백색잡음이 섞인 신호 생성
 
subplot(2,2,1);                                   % 2행 2열 분할 그림 창의 1번 창 
plot(t,nu);                                       % 균일분포 백색잡음 그림 
axis([0 2 -2 2]);                                 % x축과 y축의 그림 영역 지정 
title('균일분포 백색잡음');                        % 그림 제목 
subplot(2,2,2);                                   % 2행 2열 분할 그림 창의 2번 창 
plot(t,ng);                                       % 정규분포 백색잡음 그림
axis([0 2 -2 2]);                                 % x축과 y축의 그림 영역 지정 
title('정규분포 백색잡음');                        % 그림 제목 
subplot(2,2,3);                                   % 2행 2열 분할 그림 창의 3번 창 
plot(t,x1);                                       % 균일분포 백색잡음이 섞인 신호 그림
hold on;                                          % 현재 그림 창 유지   
plot(t,signal,'r');                               % 정현파 신호 그림
axis([0 2 -2 2]);                                 % x축과 y축의 그림 영역 지정 
title('균일분포 백색잡음이 섞인 정현파 신호');      % 그림 제목 
subplot(2,2,4);                                   % 2행 2열 분할 그림 창의 4번 창 
plot(t,x2);                                       % 정규분포 백색잡음이 섞인 신호 그림
hold on;                                          % 현재 그림 창 유지   
plot(t,signal,'r');                               % 정현파 신호 그림
axis([0 2 -2 2]);                                 % x축과 y축의 그림 영역 지정 
title('정규분포 백색잡음이 섞인 정현파 신호');      % 그림 제목 
 
fprintf('균일분포 백색잡음 a 값은 %.4f \n',a1);    % 명령창에 균일분포 잡음 a 표시
fprintf('정규분포 백색잡음 a 값은 %.4f \n',a2);    % 명령창에 정규분포 잡음 a 표시