오늘은 MATLAB 에서 sample rate conversion 방법에 대해 설명하려 합니다.
저는 보통 음원 파일에 대해 sample rate conversion 을 수행할때는 아래 포스팅에서 소개한 ffmpeg 이나 sox 등을 주로 사용하지만 MATLAB에서도 sample rate conversion 을 수행해야 할 경우가 종종 있습니다.
2013/10/21 - [유틸] - Windows 에서 sox 로 음악 파일 변환하기
2014/03/07 - [유틸] - ffmpeg 을 사용하여 rmvb 파일을 avi 파일로 변환하기
MATLAB 에서 sample rate conversion 을 할 때는 보통 resample 함수를 사용합니다. Resample 함수는 MATLAB Signal Processing Toolbox 내에 포함되어 있으므로 resample 함수를 사용할 수 없다면 MATLAB command window 에 ver 명령어를 쳐서 Signal Processing Toolbox 가 설치되어 있는지 확인 해 보시기 바랍니다.
일반적으로 Resample 함수는 다음과 같이 사용합니다.
y = resample(x,p,q)
x 라는 입력 신호에 대해 p/q 배로 sample rate 를 변경 하는 겁니다. p, q 값은 당연히 양의 정수 이어야 합니다.
보통 sample rate conversion 을 수행할때는 anti-aliasing 필터링을 하게 되는데~ 이러한 과정도 내부에서 자동으로 수행되기 때문에 사용자가 굳이 신경 쓸 필요가 없습니다.
아래 주소에서 resample 함수의 help를 보면 기본적으로 firls을 사용하여 필터를 디자인 하고 Kaiser window 를 사용하고 윈도우의 beta 값은 5를 사용 한다고 하는군요.
http://www.mathworks.co.kr/kr/help/signal/ref/resample.html
anti-aliasing 필터의 계수를 변경하고 싶다면 아래 원형의 b 값에 원하는 필터의 coefficients 값을 넣어주면 됩니다.
y = resample(x,p,q,b)
resample 함수를 사용하여 8192 Hz 의 음원을 CD 음질인 44100 Hz 로 변경해 보죠~
다음과 같이 MATLAB command window 에 명령어를 칩니다. chirp 이라는 음원은 MATLAB 에서 제공하는 음원으로soundsc 함수를 통해 재생해보면 새 소리가 납니다.
>> load chirp % chirp 신호 load
>> Fs % sample rate 확인
Fs =
8192
>> y2=resample(y,44100,Fs); % 8192 에서 44100 Hz 로 sample rate conversion
>> soundsc(y,Fs) % 8192 Hz 음원 소리 확인
>> soundsc(y2,44100) % 44100 Hz 음원 소리 확인
위 예제를 실행해보면 8192 Hz 음원과 44100 Hz 음원의 소리가 같은 것을 확인 할 수 있습니다.
하지만 각 데어터의 길이를 확인해 보면 8192 Hz 음원인 y 는 13129 인데 비해 44100 Hz 인 y2 음원의 길이는 70678 라는 것을 확인 할 수 있습니다.
>> length(y)
ans =
13129
>> length(y2)
ans =
70678
이는 8192/44100 = 13129 /70678 = 0.1858 이기 때문입니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB OOP(Object-Oriented Programming) Filter Class (0) | 2014.07.09 |
---|---|
MATLAB 16QAM AWGN & Flat Fading Diversity Simulation (0) | 2014.07.05 |
MATLAB Combination 구하기 nchoosek (0) | 2014.06.19 |
MATLAB Figure 창 그림으로 저장 하기 saveas (2) | 2014.06.18 |
MATLAB atan(), atan2() (0) | 2014.06.07 |
MATLAB Random Generation Seed 변경 (0) | 2014.05.06 |
구글 트랜드로 알아본 MATLAB의 관심도 (0) | 2014.05.04 |
MATLAB 다각형 내부의 점들 찾기 inpolygon (8) | 2014.05.01 |
댓글