목차
1. <신호의 취득과 저장>
1-1. 자신의 음성을 3초 동안 녹음해서 ‘자신의이름.wav’ (예: 홍길동.wav) 파일을 만들어 보라. (이 때 frequency는 8192 = 2^13으로 하라.) Matlab에서 wav 파일을 만드는 방법은 아래 Ex1을 참고한다.
1-2. 위에서 만든 .wav 파일을 읽어들여 data로 저장하고 이 데이터를 시간에 따라 plot해 보아라. Matlab에서 wav 파일을 읽어서 data로 저장하는 방법은 아래 Ex2를 참고한다.
2. <신호의 Power 및 Frequency 성분 분석>
2-1. 이 신호에서 0.5초에서 2.5초까지 2초 동안의 신호 (총 8192*2 = 2^14 크기의 vector)를 추출하여 random process X라 하고 X의 평균 power P를 구해보라.
2-2. X의 frequency 성분을 plot해 보아라. 이 때 신호의 크기가 2^14이므로 2^14 point FFT를 이용하여 magnitude를 plot해 본다. (참고: Matlab에서 fft를 수행한 후 fftshift를 해야 low frequency 성분이 plot의 가운데에 위치한다.)
2-3. 이 신호 X의 autocorrelation function을 구해보라. 신호의 sample 수가 2^14이므로 autocorrelation function의 길이는 2*2^14-1 = 2^15-1의 크기가 될 것이다. autocorrelation functioin을 plot해 보라. (이 때 Matlab내의 `autocorr` 함수를 사용하라.- autocorr는 autocorrelation의 추정치를 사용한다.)
2-4. 위에서 구한 autocorrelation의 FFT를 취하면 신호의 Power spectral density를 구할 수 있다. power spectral density의 magnitude를 plot해 보아라. (여기서도 fftshift를 해야 low frequency 성분이 plot의 한가운데 위치한다.)
3. <신호 + 잡음 분석>
3-1. 위 random process (X)에 additive white guassian noise (AWGN) N을 더하여 새로운 random process Y (= X+N) 를 만들어 보아라. 이 때 noise power는 signal power P의 10%로 한다. Y를 plot해 보고 Y를 소리로 들어보라 어떤가?
3-2. 신호 Y의 average power PY를 구해보고 실제 PY가 P의 1.1배 정도가 되는지 확인하라.
3-3. Y의 Fourier transform을 구하기 위해 Y에 대해 FFT를 수행해 보고 magnitude를 plot해 본다. Y의 FFT에서 2-2에서 구한 X의 FFT를 빼서 noise의 FFT를 구한 후 magnitude를 plot해 보라.
3-4. Y의 autocorrelation을 구해보고 plot해 보라. 2-3과 같은 과정을 거치면 구할 수 있다.
3-5. 위에서 구한 Y의 autocorrelation function과 X의 autocorrelation function과의 차이를 plot해 보라. 이를 Noise의 autocorrelation function과 비교해 보라. 어떠한가? 만약 차이가 난다면 그 원인에 대해 논하라.
3-6. Y의 autocorrelation을 FFT하면 Y의 power spectral density를 구할 수 있다. Y의 PSD를 구해 plot해 보라. Noise의 PSD도 구해 보라. Y의 PSD, X의 PSD, N의 PSD 사이의 관계에 대해 논하라.
4.
4-1. FIR filter의 일종인 Gaussian filter는 일종의 Low pass filter라 할 수 있다. 이 filter의 form은 다음과 같이 주어진다. 여기서 ,는 상수. Discrete인 경우에는 다음과 같은 code로 7tab filter를 만들 수 있다.
Matlab의 ‘conv’ function을 이용하여 signal Y를 위의 gaussian filter와 convolution해 보고 이를 plot 해 보라. 또한 이 신호 Z를 들어보라. 어떠한가?
4-2. 위 Y*G를 Z라는 random process라 정의할 때 Z의 FFT를 plot해 보라.
4-3. Z의 autocorrelation을 구한 후 이를 FFT해 서 Z의 PSD를 구해 보라.
4-4. Z의 PSD에서 원래 신호 X의 PSD를 뺀 차이를 구해보라. 이것이 Gaussian filtering 후 noise spectrum이다. Y의 noise power와 Z의 noise power를 비교하면 어떠한가? Filtering의 효과는 무엇인가?
1-1. 자신의 음성을 3초 동안 녹음해서 ‘자신의이름.wav’ (예: 홍길동.wav) 파일을 만들어 보라. (이 때 frequency는 8192 = 2^13으로 하라.) Matlab에서 wav 파일을 만드는 방법은 아래 Ex1을 참고한다.
1-2. 위에서 만든 .wav 파일을 읽어들여 data로 저장하고 이 데이터를 시간에 따라 plot해 보아라. Matlab에서 wav 파일을 읽어서 data로 저장하는 방법은 아래 Ex2를 참고한다.
2. <신호의 Power 및 Frequency 성분 분석>
2-1. 이 신호에서 0.5초에서 2.5초까지 2초 동안의 신호 (총 8192*2 = 2^14 크기의 vector)를 추출하여 random process X라 하고 X의 평균 power P를 구해보라.
2-2. X의 frequency 성분을 plot해 보아라. 이 때 신호의 크기가 2^14이므로 2^14 point FFT를 이용하여 magnitude를 plot해 본다. (참고: Matlab에서 fft를 수행한 후 fftshift를 해야 low frequency 성분이 plot의 가운데에 위치한다.)
2-3. 이 신호 X의 autocorrelation function을 구해보라. 신호의 sample 수가 2^14이므로 autocorrelation function의 길이는 2*2^14-1 = 2^15-1의 크기가 될 것이다. autocorrelation functioin을 plot해 보라. (이 때 Matlab내의 `autocorr` 함수를 사용하라.- autocorr는 autocorrelation의 추정치를 사용한다.)
2-4. 위에서 구한 autocorrelation의 FFT를 취하면 신호의 Power spectral density를 구할 수 있다. power spectral density의 magnitude를 plot해 보아라. (여기서도 fftshift를 해야 low frequency 성분이 plot의 한가운데 위치한다.)
3. <신호 + 잡음 분석>
3-1. 위 random process (X)에 additive white guassian noise (AWGN) N을 더하여 새로운 random process Y (= X+N) 를 만들어 보아라. 이 때 noise power는 signal power P의 10%로 한다. Y를 plot해 보고 Y를 소리로 들어보라 어떤가?
3-2. 신호 Y의 average power PY를 구해보고 실제 PY가 P의 1.1배 정도가 되는지 확인하라.
3-3. Y의 Fourier transform을 구하기 위해 Y에 대해 FFT를 수행해 보고 magnitude를 plot해 본다. Y의 FFT에서 2-2에서 구한 X의 FFT를 빼서 noise의 FFT를 구한 후 magnitude를 plot해 보라.
3-4. Y의 autocorrelation을 구해보고 plot해 보라. 2-3과 같은 과정을 거치면 구할 수 있다.
3-5. 위에서 구한 Y의 autocorrelation function과 X의 autocorrelation function과의 차이를 plot해 보라. 이를 Noise의 autocorrelation function과 비교해 보라. 어떠한가? 만약 차이가 난다면 그 원인에 대해 논하라.
3-6. Y의 autocorrelation을 FFT하면 Y의 power spectral density를 구할 수 있다. Y의 PSD를 구해 plot해 보라. Noise의 PSD도 구해 보라. Y의 PSD, X의 PSD, N의 PSD 사이의 관계에 대해 논하라.
4.
4-1. FIR filter의 일종인 Gaussian filter는 일종의 Low pass filter라 할 수 있다. 이 filter의 form은 다음과 같이 주어진다. 여기서 ,는 상수. Discrete인 경우에는 다음과 같은 code로 7tab filter를 만들 수 있다.
Matlab의 ‘conv’ function을 이용하여 signal Y를 위의 gaussian filter와 convolution해 보고 이를 plot 해 보라. 또한 이 신호 Z를 들어보라. 어떠한가?
4-2. 위 Y*G를 Z라는 random process라 정의할 때 Z의 FFT를 plot해 보라.
4-3. Z의 autocorrelation을 구한 후 이를 FFT해 서 Z의 PSD를 구해 보라.
4-4. Z의 PSD에서 원래 신호 X의 PSD를 뺀 차이를 구해보라. 이것이 Gaussian filtering 후 noise spectrum이다. Y의 noise power와 Z의 noise power를 비교하면 어떠한가? Filtering의 효과는 무엇인가?
본문내용
ot(311);
plot(f1,abs(fftshift(fft(auto_x1)))); % X 의 PSD 출력파형
title('x의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
subplot(312);
plot(f1,abs(fftshift(fft(auto_n2)))); % Noise 의 PSD 출력파형
title('noise의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
subplot(313)
plot(f1,abs(fftshift(fft(auto_y1)))); % Y 의 PSD 출력파형
title('y의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%%%% 4번 %%%%%
%%% 4-1 %%%
% FIR Filter(Gaussian filter)(LPF) 설정
sigma = 1;
width = 3*sigma;
support = -width:width;
gauss_f = exp(-(support / sigma).^2/2);
gauss_f = gauss_f / sum(gauss_f);
z=conv(y,gauss_f); % Gaussian Filter 와 random process (signal) y 의 convolution
t3=0.5:2/((Nx-1)+length(gauss_f)-1):2.5; % tn(time) 범위 설정
figure(10);
plot(t3,z); % random process z 의 출력파형
title('Z의 출력파형 '), xlabel('Time'), ylabel('Amplitude');
soundsc(z,fs); % random process Z 의 목소리 출력
%%% 4-2 %%%
f2=[-fs-(length(gauss_f)-1)/2:fs-1+(length(gauss_f)-1)/2]; % f2(frequeny) 범위 설정
figure(11);
plot(f2,abs(fftshift(fft(z)))); % random process z 의 푸리에 변환 출력파형
title('Z의 푸리에 변환 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%% 4-3 %%%
% random process Z 의 최종 autocorrelation 구하는 식
auto_z=autocorr(z,2*fs-1);
auto_z1=zeros(1,2*length(auto_z)-1);
for ii=1:length(auto_z);
auto_z1(ii)=auto_z((length(auto_z)+1)-ii);
end
for ii=length(auto_z)+1:2*length(auto_z)-1;
auto_z1(ii)=auto_z(ii-length(auto_z));
end
% (autocorr함수가 양수축 범위밖에 실행되지 않아서 autocorrelation function의 우함수 성질을
% 이용하여 앞에서 구한 auto_z를 y축 대칭하여 최종 autocorrelation function auto_z1 을 얻어냄)
figure(12);
subplot(211);
plot(t2,auto_z1); % Z의 autocorrelation function 출력파형
title('z의 autocorrelation function 출력파형 '), xlabel('Time'), ylabel('Amplitude');;
subplot(212);
plot(f1,abs(fftshift(fft(auto_z1)))); % random process z 의 PSD 출력파형
title('z의 autocorrelation function 과 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%% 4-4 %%%
% (Z 의 PSD)-(X 의 PSD)와 (Y 의 PSD)-(X 의 PSD)를 한 그래프 창에 출력하여 비교
figure(13);
subplot(211);
plot(f1,abs(fftshift(fft(auto_z1)-fft(auto_x1))));
title('(Z 의 PSD)-(X 의 PSD)의 출력파형'), xlabel('Frequency'), ylabel('Magnitude');
subplot(212);
plot(f1,abs(fftshift(fft(auto_y1)-fft(auto_x1))));
title('(Y 의 PSD)-(X 의 PSD)의 출력파형'), xlabel('Frequency'), ylabel('Magnitude');
※ 고 찰
⇒ 이번 프로젝트 과제의 주제는 자신의 목소리를 녹음하여 하나의 signal data로 만들어서 average power 값을 구하고, autocorrelation 값, spectrum, PSD(Power Spectrum density) 그리고 마지막으로 Gaussian Filter까지 흐름대로 다 알아보는 것이었다. Noise가 없는 Ideal 한 신호와 White Gaussian Noise가 더해진 신호를 가지고 이런 Parameter를 알아보는 것이었는데, 이론적으로만 알고 있었던 것들을 실제 매트랩을 통해 구현하려 하니 마음 먹은 대로 잘 되지 않아 고생을 좀 했다. 먼저 autocorrelation을 구하는 매트랩 함수인 autocorr 함수가 0부터 +값 까지만 출력을 하는 문제가 있어서, -쪽의 autocorrelation을 구하기 위해 autocorrelation function 의 특징인 우함수 성질을 이용하여, 일단 autocorr 함수로 0~ +쪽의 값을 구한 후, 그 값을 가지고 for문을 사용하여 -쪽의 autocorrelation 값을 구해냈다. 또한, 통신시스템에서 Filter의 개념들을 간단하게 배웠는데, 주로 변/복조 시스템에서 필요한 신호를 얻어내는 목적으로만 배웠고, 또한 그렇게 알고 있었는데, Noise의 영향에서 어느 정도 벗어날 수 있다는 큰 장점도 알게 되었다. 이런 것들 외에도 프로젝트를 통해 확률 및 랜덤변수라는 과목에 대한 이해도가 상승한 것 같고, 자신감이 생긴 것 같다.
plot(f1,abs(fftshift(fft(auto_x1)))); % X 의 PSD 출력파형
title('x의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
subplot(312);
plot(f1,abs(fftshift(fft(auto_n2)))); % Noise 의 PSD 출력파형
title('noise의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
subplot(313)
plot(f1,abs(fftshift(fft(auto_y1)))); % Y 의 PSD 출력파형
title('y의 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%%%% 4번 %%%%%
%%% 4-1 %%%
% FIR Filter(Gaussian filter)(LPF) 설정
sigma = 1;
width = 3*sigma;
support = -width:width;
gauss_f = exp(-(support / sigma).^2/2);
gauss_f = gauss_f / sum(gauss_f);
z=conv(y,gauss_f); % Gaussian Filter 와 random process (signal) y 의 convolution
t3=0.5:2/((Nx-1)+length(gauss_f)-1):2.5; % tn(time) 범위 설정
figure(10);
plot(t3,z); % random process z 의 출력파형
title('Z의 출력파형 '), xlabel('Time'), ylabel('Amplitude');
soundsc(z,fs); % random process Z 의 목소리 출력
%%% 4-2 %%%
f2=[-fs-(length(gauss_f)-1)/2:fs-1+(length(gauss_f)-1)/2]; % f2(frequeny) 범위 설정
figure(11);
plot(f2,abs(fftshift(fft(z)))); % random process z 의 푸리에 변환 출력파형
title('Z의 푸리에 변환 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%% 4-3 %%%
% random process Z 의 최종 autocorrelation 구하는 식
auto_z=autocorr(z,2*fs-1);
auto_z1=zeros(1,2*length(auto_z)-1);
for ii=1:length(auto_z);
auto_z1(ii)=auto_z((length(auto_z)+1)-ii);
end
for ii=length(auto_z)+1:2*length(auto_z)-1;
auto_z1(ii)=auto_z(ii-length(auto_z));
end
% (autocorr함수가 양수축 범위밖에 실행되지 않아서 autocorrelation function의 우함수 성질을
% 이용하여 앞에서 구한 auto_z를 y축 대칭하여 최종 autocorrelation function auto_z1 을 얻어냄)
figure(12);
subplot(211);
plot(t2,auto_z1); % Z의 autocorrelation function 출력파형
title('z의 autocorrelation function 출력파형 '), xlabel('Time'), ylabel('Amplitude');;
subplot(212);
plot(f1,abs(fftshift(fft(auto_z1)))); % random process z 의 PSD 출력파형
title('z의 autocorrelation function 과 PSD 출력파형 '), xlabel('Frequency'), ylabel('Magnitude');
%%% 4-4 %%%
% (Z 의 PSD)-(X 의 PSD)와 (Y 의 PSD)-(X 의 PSD)를 한 그래프 창에 출력하여 비교
figure(13);
subplot(211);
plot(f1,abs(fftshift(fft(auto_z1)-fft(auto_x1))));
title('(Z 의 PSD)-(X 의 PSD)의 출력파형'), xlabel('Frequency'), ylabel('Magnitude');
subplot(212);
plot(f1,abs(fftshift(fft(auto_y1)-fft(auto_x1))));
title('(Y 의 PSD)-(X 의 PSD)의 출력파형'), xlabel('Frequency'), ylabel('Magnitude');
※ 고 찰
⇒ 이번 프로젝트 과제의 주제는 자신의 목소리를 녹음하여 하나의 signal data로 만들어서 average power 값을 구하고, autocorrelation 값, spectrum, PSD(Power Spectrum density) 그리고 마지막으로 Gaussian Filter까지 흐름대로 다 알아보는 것이었다. Noise가 없는 Ideal 한 신호와 White Gaussian Noise가 더해진 신호를 가지고 이런 Parameter를 알아보는 것이었는데, 이론적으로만 알고 있었던 것들을 실제 매트랩을 통해 구현하려 하니 마음 먹은 대로 잘 되지 않아 고생을 좀 했다. 먼저 autocorrelation을 구하는 매트랩 함수인 autocorr 함수가 0부터 +값 까지만 출력을 하는 문제가 있어서, -쪽의 autocorrelation을 구하기 위해 autocorrelation function 의 특징인 우함수 성질을 이용하여, 일단 autocorr 함수로 0~ +쪽의 값을 구한 후, 그 값을 가지고 for문을 사용하여 -쪽의 autocorrelation 값을 구해냈다. 또한, 통신시스템에서 Filter의 개념들을 간단하게 배웠는데, 주로 변/복조 시스템에서 필요한 신호를 얻어내는 목적으로만 배웠고, 또한 그렇게 알고 있었는데, Noise의 영향에서 어느 정도 벗어날 수 있다는 큰 장점도 알게 되었다. 이런 것들 외에도 프로젝트를 통해 확률 및 랜덤변수라는 과목에 대한 이해도가 상승한 것 같고, 자신감이 생긴 것 같다.
추천자료
웹사이트 분석 및 평가 및 대안제시 프로젝트(HCI측면에서 인터페이스 분석)
자산가격버블의 확산 및 붕괴 메커니즘과 통화정책의 효율적 관리
[정보화사회][정보사회][정보통신망구축][정보통신기술][정보화][정보기술]정보화사회(정보사...
벼 육종에 있어서 분자표지를 이용한 육종방법 및 적용가능성
[정부신뢰성][정부신뢰도]정부신뢰성(정부신뢰도)의 의미, 정부신뢰성(정부신뢰도)의 요인과 ...
노인자원봉사론 - 노인자원봉사활동의 현황 및 문제점을 분석하고, 노인자원봉사활동이 조직...
★1.가족복지정책의 배경, 개념, 필요성 및 전망과 과제, 유럽과의 비교분석, 2. 표본조사의 ...
기업지배구조의 유형, 기업지배구조의 기본원칙, 기업지배구조의 개혁, 기업지배구조의 감시...
사회의 변화에 따른 가족 변화를 설명하고, 이러한 변화에 적합한 가족복지 정책을 제시 (여...
로또 구매행태를 통한 문제점 탐색 및 개선방안
각자 자신이 어떤 대상이든 특정한 대상을 선정하여 자원봉사를 실천해보고 그 과정 속에서 ...
프로젝트 접근법의 배경과 목적 및 특성에 대해 설명하고, 유아의 일상생활과 밀접한 한 개...
소개글