회사에서 MATLAB 을 사용하는데 ver 명령어를 통해 어떤 툴박스가 설치되어 있는지 확인해 보니~ Simscape 툴박스가 설치되어 있더군요. Simscape 와 함께 Simscape Electronics, Simscape Power Systems 도 함께 깔려 있던데 저는 정확히 어떤 차이인지는 잘 모르겠더군요.

어쨌든 학부때 회로이론, 전자회로와 같은 과목을 좋아했던 지라 기왕 깔려 있는거 Simscape 를 한번 사용해 보고 싶다는 생각이 들어서 아래 메뉴얼을 조금 들여다 보고 Simscape 블록으로 아주 간단한 RC 회로를 구성해 봤습니다.

https://kr.mathworks.com/help/physmod/simscape/gs/essential-steps-for-constructing-a-physical-model.html

일단 ssc_new 라고 명령하면 Simscape 를 사용하기 위한 기본적인 configuration 이 설정되는 것 같더군요. 아래와 같이 기본적인 블록이 추가된 형태로 model 파일이 열립니다.

그럼 이제 왼쪽에 있는 Simscape Library 중에서 필요한 블록들을 선택해서 model 파일을 구성하면 되겠네요~

위 모델 파일의 블록 중 PS-Simulink Converter, Simulink-PS Converter 블록은 Simulink 의 블록과 Simscape 블록간에 데이터를 전달하기 위한 블록으로 보입니다.

저는 Simscape 초심자라 간단하게 아래와 같이 RC 회로를 구성해 봤습니다.

전류와 전압값 확인을 위해 Current Sensor 는 직렬로 Voltage Sensor 는 병렬로 연결해 줬고~ 데이터를 Scope 에서 확인하기 위해 PS-Simulink Converter 를 통해 Scope 와 연결 했습니다.

Ctrl + S 를 눌러서 model 파일을 저장하고~ 실행을 해 보니 다음과 같이 전류, 전압 값을 확인 할 수 있었습니다.

그냥 간단하게 해 본거긴 하지만 대충 어떻게 사용하는건지에 대한 감은 오네요. 위 Simscape 관련 tutorial 링크를 좀 더 정독하면서 공부를 한번 해 봐야 겠습니다.

혹시 필요하신 분이 있을까봐 위에 구성했던 모델 파일도 올립니다.

simscapetest2.slx



오늘은 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 이기 때문입니다.


+ Recent posts