매트랩을 이용하여 자신의 목소리 취득저장 & 분석
본 자료는 6페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
해당 자료는 6페이지 까지만 미리보기를 제공합니다.
6페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

매트랩을 이용하여 자신의 목소리 취득저장 & 분석에 대한 보고서 자료입니다.

목차

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의 효과는 무엇인가?

본문내용

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의 영향에서 어느 정도 벗어날 수 있다는 큰 장점도 알게 되었다. 이런 것들 외에도 프로젝트를 통해 확률 및 랜덤변수라는 과목에 대한 이해도가 상승한 것 같고, 자신감이 생긴 것 같다.
  • 가격5,000
  • 페이지수18페이지
  • 등록일2011.02.08
  • 저작시기2008.12
  • 파일형식한글(hwp)
  • 자료번호#650981
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니