신호 샘플 레이트 변경하기
이 예제에서는 신호의 샘플 레이트를 변경하는 방법을 보여줍니다. 이 예제는 두 부분으로 구성됩니다. 첫 번째 부분에서는 정현파 입력 신호의 샘플 레이트를 44.1kHz에서 48kHz로 변경합니다. 이 워크플로는 오디오 처리에 일반적으로 사용됩니다. 콤팩트 디스크에 사용되는 샘플 레이트는 44.1kHz이고, 디지털 오디오 테이프에 사용되는 샘플 레이트는 48kHz입니다. 두 번째 부분에서는 녹음된 음성 샘플의 샘플 레이트를 7418Hz에서 8192Hz로 변경합니다.
44.1kHz로 샘플링된 사인파의 합으로 구성된 입력 신호를 생성합니다. 여기서 사인파는 2kHz, 4kHz, 8kHz의 주파수를 가집니다.
Fs = 44.1e3;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*2000*t) + 1/2*sin(2*pi*4000*(t-pi/4)) + ...
1/4*cos(2*pi*8000*t);
샘플 레이트를 44.1kHz에서 48kHz로 변경하려면 원래 샘플 레이트 44100에 P/Q
를 곱한 값이 지정된 허용오차 내에서 48000과 같아지는 유리수(정수비) P/Q
를 결정해야 합니다.
이 인자를 확인하려면 rat
를 사용하십시오. 새 샘플 레이트 48000과 원래 샘플 레이트 44100의 비를 입력합니다.
[P,Q] = rat(48e3/Fs); abs(P/Q*Fs-48000)
ans = 7.2760e-12
P/Q*Fs
가 원하는 샘플 레이트 48000과 정도의 차이만 있다는 것을 알 수 있습니다.
rat
로 구한 분자 인자와 분모 인자를 resample
에 대한 입력값으로 사용하여 48kHz로 샘플링된 파형을 출력합니다.
xnew = resample(x,P,Q);
컴퓨터에서 오디오를 재생할 수 있는 경우 두 가지 파형을 재생할 수 있습니다. 신호를 재생하기 전에 볼륨을 적당한 수준으로 설정합니다. 신호가 두 개의 구분된 샘플 레이트로 들리도록 sound
명령을 개별적으로 실행합니다.
% sound(x,44100) % sound(xnew,48000)
음성 샘플의 샘플 레이트를 7418Hz에서 8192Hz로 변경합니다. 이 음성 신호는 "MATLAB®"이라고 말하는 사람의 음성을 녹음한 것입니다.
음성 샘플을 불러옵니다.
load mtlb
파일 mtlb.mat
를 불러오면 음성 신호 mtlb
와 샘플 레이트 Fs
가 MATLAB 작업 공간으로 들어옵니다.
새 샘플 레이트 8192와 원래 샘플 레이트의 비에 대한 유리수 근삿값을 구합니다. rat
를 사용하여 근삿값을 구할 수 있습니다.
[P,Q] = rat(8192/Fs);
새 샘플 레이트로 음성 샘플을 리샘플링합니다. 두 신호를 플로팅합니다.
mtlb_new = resample(mtlb,P,Q); subplot(2,1,1) plot((0:length(mtlb)-1)/Fs,mtlb) subplot(2,1,2) plot((0:length(mtlb_new)-1)/(P/Q*Fs),mtlb_new)
컴퓨터에 오디오 출력 기능이 있는 경우 비교를 위해 각각의 샘플 레이트로 두 파형을 재생해 볼 수 있습니다. 사운드를 재생하기 전에 컴퓨터의 볼륨을 청취에 적당한 수준으로 설정합니다. 음성 샘플을 각각 다른 샘플 레이트로 비교하기 위해 sound
명령을 개별적으로 실행합니다.
% sound(mtlb,Fs) % sound(mtlb_new,8192)