본문 바로가기
일기장

매틀랩(Matlab) 맥놀이 현상 플로팅 해보기!

by ㅋㅋ잠자 2014. 7. 11.
반응형

안녕하세요~ 도정진입니다.

     

최근에 맥놀이 현상에 대해서 실험을 해 보면서 정리한 것들을 올려보려 합니다.

     

     

맥놀이 현상은 진동수 차이가 있는 두 파형이 겹쳤을 때 나타나는 현상으로 감쇄 혹은 보강현상이 일어나서 웅~ 웅~ 소리가 나는 것을 의미합니다.

     

피아노의 경우에도 건반 두 개를 눌렀을 때 소리가 커졌다 작아졌다하는 것을 들을 수 있습니다.

     

이것을 식으로 나타내면 아래와 같아요!

     

     

두 파형의 합으로 나타내고 이를 합공식으로 2번째 식으로 정의가 가능합니다.

     

이를 매틀랩 코드로 작성하면 아래와 같습니다.

     

f1=1000; // 진동수가 1000인 첫 번째 함수 설정

f2=1002; // 진동수가 1002인 두 번째 함수 설정

t=0:1/48000:1-1/48000; // 상세한 점을 보기 위해 0부터 1간극을 1/48000 으로 설정했다.

x1=sin(2*pi*t*f1); // x1 에 관한 식

x2=sin(2*pi*t*f2); // x2 에 관한 식

plot(t,x1); // t와 x1 에 대해서 그래프를 그린다.

grid, hold; // 그 위에 그래프를 이어 그리는데

plot(t,x2, 'r'); // t와 x2 에 대해서 그린다. 색은 빨간색으로

     

이를 매틀랩에서 플로팅을 하게 되면 아래와 같은 그래프가 플로팅 됩니다.!

     

     

     

위 사진은 두 파형의 진동수 차이가 2Hz 가 차이나는 것으로 실제로 그래프에 대해서 줌을 해 보면 2번째 그래프가 뒤로 밀리는 것을 보실 수 있습니다!

     

     

그리고 이에 대해서 FFT 를 적용해 보고 싶죠?

FFT 란 가로축을 주파수로 하고 세로축을 그에 대한 db 값으로 나타내는 것입니다.

     

이는 흔히, 레벨미터의 막대 라고 할까요? 그게 오르락 내리락 하는 현상과 같습니다. 즉 한 음악에 대해서 주파수 분포를 분석하여 스펙트럼으로 보여주거나 하는 것입니다.

     

물론 이 기능은 오실로스코프에도 있습니다 ㅋㅋㅋ

     

     

이를 매틀랩으로 플로팅 해 보기 위해서 아래의 코드를 덧붙입니다!

     

N = 0:1:48000-1; // t는 주기임으로 진동수로 바꾸기 위해 48000을 곱한 범위를 N의 범위로

k=abs(fft(y)); // FFT 수식을 쓴다.

plot(N,k); // N과 k에 대해서 그래프를 그린다.

     

이렇게 하신 후 플로팅을 해 보면 아래와 같이 플로팅 됩니다!

     

     

     

양쪽으로 두 개의 선이 보임을 알 수 있고 두 파형이 겹친것에 대해서 정확히 진동수 구분이 됨을 알 수 있습니다.

     

맨 처음 코드에서 첫번째 식은 1000Hz, 1002Hz 였습니다. 이 두 개를 합친 것에 대해서 FFT 를 실행하였는데

     

입력 된 파형에 대해서 주파수 분석이 정확히 됨을 알 수 있습니다.

     

     

감사합니다. 즐거운 매틀랩 시간 가지시길..

   

   

반응형

댓글