목차
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. 표본조사의 ...
- 기업지배구조의 유형, 기업지배구조의 기본원칙, 기업지배구조의 개혁, 기업지배구조의 감시...
- 사회의 변화에 따른 가족 변화를 설명하고, 이러한 변화에 적합한 가족복지 정책을 제시 (여...
- 로또 구매행태를 통한 문제점 탐색 및 개선방안
- 각자 자신이 어떤 대상이든 특정한 대상을 선정하여 자원봉사를 실천해보고 그 과정 속에서 ...
- 프로젝트 접근법의 배경과 목적 및 특성에 대해 설명하고, 유아의 일상생활과 밀접한 한 개...
소개글