출판!

1. Who's J.Bear ? 2012.01.26 21:10
크리에이티브 커먼즈 라이선스
Creative Commons License
봄에 열심히 작업했던 책이 드디어 온라인 퍼블리쉬가 되었다 ㅋㅋ

메일이 오네 ㅋㅋㅋ 

 
어라 ㅋㅋ 안보이네 ㅋㅋㅋ

Dear Mr.Yoon ㅋㅋ 이렇게 시작하는데 ㅋㅋㅋ

일단 책 제목은 Advances in electrocardiograms - Methods and Analysis

멋있네 ㅋㅋㅋ

우리가 작성한 챕터는 

챕터 5 : Automated Selection of Optimal ECG Lead Using Heart Instantaneous Frequency During Sleep

ㅋㅋㅋㅋ 이것도 멋있네 ㅋㅋ
 
ㅋㅋㅋ 메일 온 내용에 의하면

개인 블로그에 올려도 된다고 하니 5장만 따로 올려볼까 한다 ㅋㅋㅋㅋ

 
근데 왜 이따위 글씰 나오지 ㅋㅋㅋ

그래도 보인다 ㅋㅋ

 Ja-Woong Yoon ㅋㅋㅋㅋ 

 
저작자 표시 비영리 동일 조건 변경 허락
신고

'1. Who's J.Bear ?' 카테고리의 다른 글

논문 작업중  (0) 2012.02.06
티스토리 초대장 배포 (1월분 14장)  (8) 2012.02.01
출판!  (2) 2012.01.26
강아지와 호랑이의 싸움  (0) 2012.01.11
세상에서 최고로 어려운 수학 문제  (0) 2012.01.07
세계 4대 뮤지컬  (0) 2011.12.17
Posted by J.Bear
크리에이티브 커먼즈 라이선스
Creative Commons License

제기랄 글 열심히 쓰고 있었는데 날라가서 다시 써요 ㅠ

STFT 에 관해 포스팅 한 것이 벌써 2주가 지났네요 ㅋㅋ

 

예고한대로 오늘은 STFT 를 이용해서 아이유-좋은날의 3단부스터 부분을 분석해 보도록 하겠습니다 ㅋㅋ

저는 노래 듣다가 아이디어가 떠올라서 한번 해보자 라는 생각이였는데 이미 이것을 하신분이 있더라구요 ㅋㅋ

하지만 그분은 신호처리부분을 강하게 다루지 않으셨기에, 저는 Matlab 코드와 신호처리쪽에 초점을 맞추어

STFT 포스팅을 마무리 하려 합니다. ㅋㅋ

 

일단 항상 이런 프로젝트를 시작하기에 앞서서 계획을 세우는 것이 중요하지요

이렇게 할 경우에 내가 어디까지 진행되었는지, 얼마나 남았는지 등등을 한눈에 알아 볼수 있어서, 적게 헤매게 되는 것 같아요

 

 

 

프로젝트 명 : Adative Filter (LMS) 를 이용한 MR 제거 및 STFT 를 이용한 음계 분석

목적 : 1. STFT 의 기능구현 검증

2. 지금까지 공부한 개념들의 총괄적인 적용 및 확인

3. 나의 재미

프로젝트 목표 : 최후의 STFT 결과가 실제 악보의 음정과 얼마나 일치 하는지 비교

준비물 : 1. 아이유 – 좋은날 mp3 파일

     2. Wav file 로 변환 할 소프트웨어 or mp3 파일을 matlab 에서 인식 시킬 수 있는 함수

     3. 아이유 – 좋은날 악보

     4. 피아노 음계의 주파수 영역 정보

     Final. 포기하지 않는 끈기와 열정, 근성 (이게 젤로 중요함!!!)

진행과정

  1. 아이유 – 좋은날 mp3 음원파일 다운로드: (도시락에서 합법적으로 다운로드했어요 ㅋㅋ)
  2. 3단 부스터 영역 확인 : 3분 25초 ~ 3분 40초 데이터 (직접 귀로 확인 ㅋㅋ)
  3. Matlab 을 이용하여 PCM 신호에서 MR 신호를 뽑아내고 Stereo 로 저장
  4. Adaptive Filter (LMS) 를 이용하여 Matlab에서 Vocal File 생성
  5. Left , Right 각각의 Mono Signal 을 뽑아내고 서로 합쳐주어서 Stereo File 로 저장

 

 

요로코롬 계획을 세웠습니다 ㅋㅋ 그럼 시작해 볼깝숑? ㅋㅋㅋ

 

일단 아이유 – 좋은날의 3단 부스터 영역을 잘라서 wav 파일로 저장하기 위한 프로그램이 필요하겠죠? ㅋㅋ

그 이름도 유명한 GoldWave 를 사용하였습니당 ㅋㅋ

 

 

<Figure1. GoldWave Layout>

 

오!!! 보라!!! ㅋㅋ 이 웅장한 자태를 ㅋㅋㅋ

스테레오라서 이렇게 2라인으로 나와용 ㅋㅋ

여기서 3분 25초에서 3분 40초 데이터를 잘라서 wav 로 Save As 하면 되겠지용? ㅋㅋ

 

다음으로 MR 을 뽑아내야 합니다.

대부분의 음악 파일들은 Stereo 로 저장되어 있어요

즉 왼쪽, 오른쪽으로 흘러나오는 소리를 따로 기록해 놓았단 의미로 해석할수 있어요 ㅋ

하지만!!! 여기서 차이점은 ㅋㅋ

  1. 음성 신호는 In Phase 로 저장한다
  2. MR 은 Out of Phase 로 저장한다 ㅋㅋ

자… 감이 오시지요? ㅋㅋ

스테레오 PCM 신호에서 왼쪽에서 오른쪽 신호를 빼버리거나, 오른쪽에서 왼쪽 신호를 빼주면

음성 신호는 동위상이라 제거 되고 MR 만 남게 되는 것입니다 ㅋㅋ

생각 보다 쉽지요??

%% PCM 파일 로드

[data,fs,bit] = wavread('booster.wav');

 

%% MR 생성

mr = data(:,1)-data(:,2);

mrs = [mr mr.*(-1)]; wavwrite(mrs,fs,bit,'booster_mr.wav');

wavwrite(mrs,fs,bit,'booster_mr.wav');

 

자 그럼 mono 형태의 MR 을 얻게 될것이에요 ㅋㅋ

그걸 스테레오로 바꿀려면?? 위에서 설명한 개념을 반대로 수행하면 되겠죠? ㅋㅋ

위의 MATLAB 코드 참조하세요 ㅋㅋ

그럼 이제 Adaptive Filter 를 써서 원래 신호에서 우리가 얻은 MR 을 제거하고 목소리만 강조된

데이터를 얻어내면 되겠네요 ㅋㅋ

 

Adaptive Filter 의 경우 잘 모르면 그냥 넘어가세요 ㅋㅋ 궁금하신분들 코드 보시구요 ㅋ

<Figure2. Adaptive Filter 기본 블록도>

 

대충 이런 개념인데… ㅋ 흠.. ㅋㅋ 여튼 우리가 하고자 하는 것은 STFT 이니까요 ㅋㅋ

적응필터에 대해서 공부하는 것은 다음기회에 포스팅을 할께요 ㅋㅋ

 

이렇게 해서 MR 뺀 쌩목소리 버전을 뽑았습니다 ㅋㅋ

하지만!!! 이렇게 한다고해서 배경음악이 다 빠지는 것은 아니에요 ㅋㅋ

다만 목소리 부분이 아주 크게 강조가 되었을 뿐 ㅋㅋ 들리긴 들리더라구요 ㅋㅋ

 

시중에 돌아다니는 MR 제거 프로그램이 있어서, 그 프로그램으로 뽑은 파일과

제가 만든 파일을 비교해 보았는데 크게 차이가 없어요 ㅋㅋ

파일 올려드릴 테니 비교해 보세요 ㅋㅋ

 

<Figure3. MR 제거해주는 쪽바리 프로그램 ㅋ>

제 귀에는 두개 다 얼추 비슷하게 들렸습니다 .ㅋㅋㅋ

 

이제 STFT 할 차례 ~ ㅋㅋ

 

<Figure4. STFT MATLAB 코드>


쿨하게 코드부터 떄려놓고 가겠습니다 ㅋㅋ

포스팅 1,2,3번을 보신분들은 코드가 이해가 가실거라 믿어요 ㅋㅋ

 

파라미터들은 3번 포스팅에서 말씀드렸듯이, 시행착오를 거쳐가며 얻어냈습니다.

다만, 이때 고려해줄수 있는 사항은 아이유가 부스터를 쓸 때 최소 1초 이상은 질러

주는 것 같으니까 이부분을 고려서 Time Resolution을 결정할 수 있다는거죠 ㅋ

STFT 를 너무 빡세게 해버리면 훗날 그래프 볼 때 힘드니까 잘 결정하세요 ㅋㅋ

 

고로!!! 좋은 CPU 와 좋은 GPU 가 있어야 연구도 잘한다!!!

 

 Figure 5. STFT Spectrogram

아… 망할 스팩트로그램 ㅋㅋ 당최 무슨소린지 알수가 없습니다 ㅋㅋ

 

이따위로 나와서 포기하면… 안되요 ㅋㅋㅋ

인간의 목소리가 낼 수 있는 주파수 영역대를 찾았어요 ㅋ

300Hz ~ 3.4kHz 까지 낼 수 있더군요.

아이유가 부스터 쓰는 음이 300Hz 보다는 높을거라는 생각이 들더군요

잠시뒤에 자세히 말씀드리겠지만, 우리가 흔히 생각하는 1옥타브 '라' 가 440Hz

이구요, 이 주파수가 기준 주파수가 되어 반음 올라갈때마다 배씩

올라가요 ㅋㅋ

그래서 500 Hz 부터 1kHz 까지 봐보자! 라고 생각한 것입니다 ㅋㅋ

 

자 그럼.. 그림 나갑니다 ㅋㅋ

 

 

Figure 6. STFT 결과 Mesh Graph

 

오 뭔가 보이는 것 같지요??? ㅋㅋ

그럼 좀더 선형적으로 보기위해서 Contour 때려볼까요? ㅋㅋ

 

Figure 7. STFT 결과 Contour Graph

 

야호~ ㅋㅋㅋ

3단 부스터를 쓰는 부분이 아주 딱 들어 맞네요? ㅋㅋ

해당 주파수를 구해서 음계를 구해서 써놓고 아이유 좋은날 악보를 찾아서 부스터 부분 음계를 구해

비교할 일만 남았습니다.

1단 : 659.45Hz

2단 : 698.48Hz

3단 : 738.86Hz

의 주파수를 갖고 있군요 ㅋㅋ 와 이렇게 길게 소리를 내면서 음이 흔들리지 않았다니 ㅋㅋ

아이유 너 노래좀 잘하는구나? ㅋㅋㅋ

 

여튼, 이제 저 주파수가 피아노 음계의 어떤 음에 해당하는지 볼까요? ㅋ

 

     Figure 8. 피아노 음계의 주파수

 

위에서 잠깐 말씀드린 것 처럼, 1옥타브 '라' 가 440Hz 로 기본이 되용 ㅋㅋ

여기서 반음 올라갈때마다 배씩 증가 한답니다 ㅋㅋ

그래서 주욱 주파수를 구해서 써봤어요 ㅋㅋ

우리가 흔히 생각하는 2옥타브 미, 파, 파# 의 음계를 불렀다고 공학적으로 유추할수 있군요

 

그럼 악보를 찾아서 비교해 볼까용? ㅋ

 

Figure 9. IU 좋은날 악보

짜안~ ㅋㅋㅋ

부스터 부분에 제가 가사를 썼습니다 ㅋㅋ

오.. 앞쪽에 #이 세개나 붙은 악보군용 ㅋㅋ

그럼 샵 플랫 관계 잘 생각하면서 계이름 읽어보니!!!

 

앗!! 2옥타브 미, 파, 파# 으로 정말 정확하게 일치하는군요!!!

와 간지다 진짜 ㅋㅋㅋ

아.. 글을 졸라 쓸라니까 힘드네 ㅋㅋ

 

원래는 코드도 다 올릴려고 했지만 힘든 관계로 m-file 로 첨부합니다 ㅋㅋ

궁금하신분들은 다운로드 받아서 한번씩 해보세요 ㅋㅋㅋ

 

코드 전문과 제가 잘라놓은 파일들을 첨부할 테니까 한번씩 해보시면 잼있을거에요 ㅋㅋ
이 전 과정을 문서화 해놓은 PDF 파일도 첨부합니다

이걸로서 앞서 3개의 포스팅에서 설명한 STFT 방법에 대해 감이 오셨을 거라고 생각되네요 ㅋ

 긴 글 읽느라 수고 많으셨습니다 ㅋㅋㅋ

그럼 즐거운 코딩, 즐맷랩 되세요 ㅋㅋㅋ

 

프로젝트 결과물

  1. IU.m
  2. STFT&IU.pdf
  3. Booster.wav : 3단 부스터 쓰는 부분만 캡쳐함
  4. Booster_mr .wav : Matlab 을 이용해 MR 만 뽑아낸 파일
  5. Booster_vocal.wav : Adaptive filter 를 이용해 목소리만 뽑아낸 파일
  6. Boost_vocal.wav : 상용화된 쪽바리 프로그램으로 MR 제거한 버전 (비교용)
    (눼미, 이거 파일용량 때문에 따로 올려드릴께요 ㅋ)


     

신고
Posted by J.Bear
크리에이티브 커먼즈 라이선스
Creative Commons License


STFT 의 세번째 포스팅이네요 ~ ㅋㅋ

앞선 2개의 포스팅에서 STFT 가 왜 생겨나게 됐는지, 기존의 FT 방법들과의 차이점이 무

 

엇인지에 대해

간략하게 알아보았지요? ㅋㅋ

오늘은 1번 포스팅에서 다루었던 신호를 직접 STFT 해봄으로써

Matlab 을 이용해서 어떻게 STFT 를 하는지에 대해 알아보도록 하겠습니다

Matlab에서 STFT 를 지원해주는 명령어는 spectrogram 입니다 

함수이름이 참 직관적이죠? ㅋㅋ 앞쪽 포스팅을 보신분들은 무슨 말일지 아실듯

결국 우리가 얻어내야 하는 이미지가 이 spectrogram 인 것입니다 ㅋㅋ

1차 포스팅에서는 주파수가 7, 14, 21, 28Hz 가 5초에 한번씩 변하게 했었는데요

이번에는 STFT 가 갖는 장점을 눈에 볼수 있도록, 순서를 바꾸어서

4초가 지날때마다 14, 7, 28, 21 Hz 로 변하도록 신호를 만들었어요 ㅋ

 


요부분은 뭐 다들 잘 아시겠지용? ㅋㅋ

다 하고나서 코드 전문과 자료를 함께 첨부할테니 잘 안보여도 그냥 그랬구나하고 지금은 넘어가주세요 ~ ㅋㅋ

다음으로 이신호를 FFT 해봐야겠지용? ㅋㅋ

저는 귀찮아서 요론식으로 한번에 뿌려버렸어요~

여러분들은 코드를 요로케 짜시면 안대겠지요? ㅋㅋ

N = 11;
ft = fft(x,2^N);
psd = abs(ft);

요론식으로 알아보기 쉽도록 ㅋㅋ

여튼 지금은 귀찮으니까 패스~~ 2048포인트로 FFT 했구용~

제가만든 신호 주파수는 100Hz , 위에서 알수있지요??

FFT 를 모르시는분들은 댓글달아주세요~ ㅋ 기본중에 기본이지만 요청이 들어오면 그것도 간단히 포스팅 할께요






요론식으로 아주 간지나게 나오네요??

숫자가 잘 안보이실지 모르겠지만, 7 14, 21, 28Hz 가 순서대로 표현되네요 ㅋ

여기서 우리는 이렇게 생각할수 있겠죠

하지만, 우리는 14, 7, 28, 21 Hz 를 순차적으로 넣어준건데, 여기서는 그냥 이러한 성분들이 들어있다고만 보여주네요

아이 짱난다. ㅋㅋ 그래서 STFT 를 해봐야겟지요?

자 그럼 Command 창에

>>doc spectrogram

을 쳐서 어떤형태의 입력을 넣어줘야 어떤형태의 출력을 뽑아주는지 알아야겠지요?


와 간지나는 Matlab. ㅋㅋ

이제 저것들이 뭘 의미하는지 알아보지요 ㅋㅋ

1. S : Spectrogram 의 S 를 따다 쓴 것이 아닌가 라는 저만의 생각 ㅋㅋ 여튼 STFT 한 결과를 여기에 저장하겠구나~~
2. x : 입력 Sinal 이죠. ㅋ 요 신호를 STFT 해주겠구나~~~
3. window : 구간을 정해가며 샘플을 뽑아다가 FFT 하는것을 반복할테니까 그 구간을 결정한 window 를 집어 
                  넣어 줘야겠구나~~~~~~~~~ (Window 개념을 모르시는분은 공부하세요!!)
4. noverlap : window 를 취해가면서 샘플을 선택하는데 Overlab 되어지는 샘플갯수를 입력하는 란이에요
                   빡시게 Overlab 할수록 시간축 해상도가 올라가겠지요?
5. F : FFT 를 몇포인트짜리로 돌릴것이냐? 이거에요 ㅋㅋ 높일수록 주파수 해상도가 올라가겠죠??
6. fs : 입력신호의 Sampling Rate 를 넣어주라는 소립니다. 넣어줄 경우에 주파수와 시간 정보를 함수내에서 직접
         계산해서 실제 정보대로 만들어 주겠단 소리에요.
7. 출력단의 F, T : 설명 안해도 되겠죠? ㅋㅋ

아주 나이스 합니다 ㅋㅋ

그럼 위 신호를 STFT 를 해보기 위해서 코드를 작성해 보지요


오 간단하다 ㅋㅋ

Set Parameter 에서 필요한 정보를 모두 제공해 주었지요? ㅋ

저는 주파수 해상도를 높인 대신에, 시간축 해상도를 낮췄어요 ㅋ

어차피 4초에 한번씩 변하는 신호였으니까 저정도로 잡아도 충분히 변화를 볼수 있고

주파수 해상도를 높인 것은, 여러분들에게 좀더 깔끔한 라인 스팩트럼을 보여드리고 싶어서입니다


오옷~

시간에 따라 변하는 해당 주파수가 붉은색으로 표시되는군요.

해단 주파수의 Power 가 높기때문에 붉은색으로 보이는것이에요

하지만!! 시간축 해상도를 2초 정도로 잡아놓아서 4초 근방에서 변하는 신호가 굉장히 뭉개져서 나오네요

그렇다면! 시간축 해상도를 좀 높여볼깝숑??


같은 코드에 R = 40 , 즉 윈도우의 길이로 40샘플을 선택했더니 시간축 해상도는 올랐는데

주파수 영역이 뭉개져서 정확한 주파수를 찾기가 힘들군요 ㅋㅋ

자 여기서 느끼셔야 할것은, 아... 시간과 주파수영역의 해상도가 상호 배타적이구나.

윈도우 길이와 FFT 사이즈를 잘 결정해서 최소한의 연산량으로 내가 원하는 정보를 알아 내야 겠구나!!

라고 생각하여야 공학을 하는 사람이겠지요? (너나 잘하세요라고 생각하시는거 다 알고있습니다 ㅋㅋㅋ)

이런 Calibration 과정은 여러분들이 직접 해보시기 바랍니다.

여기서 멈추면 서운하죠??

위의 스팩트로그램을 3D 형태로 뿌렸습니다

Mesh-Graph 라고 불리우죠? ㅋㅋ 오른쪽은 그 영상을 위에서 내려다본 투영 영상이에요

Contour 라고 합니다.

이 그래프에 관한 코드는 첨부해드린 m - file 에서 확인하시기 바랍니다 ㅋ

저도 얼릉하고 공부해야되서 ㅋㅋㅋ

시간에 따라서 신호의 주파수가 어떻게 변했는지를 단편적으로 보여주는 쉬운 예 였습니다.

제가 STFT 를 공부할때 정리했던 정리 파일과, 위 코드가 포함된 m-file 을 첨부할테니

필요하신분 참고하시구요

잘못된점이나 의문사항 있으면 댓글로 Feedback 해주시기 바랍니다 ~ ㅋㅋ

다음 포스팅에서는

지금까지 포스팅한 STFT 를 이용해서

아이유 '좋은날' 에 나오는 3단 부스터 부분 있지요??

그부분의 음계를 공학적으로 유추해서 가정해놓고, 악보를 찾아서 실제로 비교해 보아

STFT 를 잘 Calibration 했을때 얼마만큼의 정확도를 보여줄수 있는지를 알아보는

간단한 개별 실험을 해서 올려드리도록 하겠습니다~

그럴러면 Matlab 을 이용해서 MR 제거버젼 파일을 뽑아내야 하는데 ㅋㅋ

그건 따로 포스팅하고 초점은 STFT 에 맞추도록 하겠습니당. ㅋㅋㅋ

여러분들과 관심 있으시면 한번 해보세요~

긴글 읽어주셔서 감사하구요~ 다음 포스팅에서 뵙겠습니다 ~ ㅋ


 

신고
Posted by J.Bear
크리에이티브 커먼즈 라이선스
Creative Commons License

일본에서 날라온 방사능에 제 몸이 오염되어서 정말로 힘이 듭니다 ㅠㅜ

그냥 기절해 있는것 같아요.

저는 강인한 남자이기 때문에 절대로 감기!!! 따위는 걸리지 않습니다. ㅋㅋㅋ

지난 포스팅에서는 어떻게 시간이 변함에 따라 주파수가 변해가는 신호가 있을때

어떻게 구별하면 좋을까? 라는 질문을 던지고 FFT 의 시간적인 한계에 대해서 말씀드렸었지요 ㅋ

그 해결책이 STFT 라는 것 까지 말씀드렸구요 ㅋ

그래서 오늘은 STFT 의 개념에 대해서 바로 논해보도록 하겠습니다. ㅋㅋㅋ

DSP 수업시간이 생각나시겠지만, 최대한 재미있고 쉽게 풀어나가볼께요 ㅋ

STFT 는 시간에 따라 주파수 성분이 변하는 신호의 time - frequency  정보를 어떻게 효율적으로 분석할수 있을까?

하는 개념에서 나오게 된것입니다.

일단 'Spectrogram' 이 무엇인지 아셔야 할것 같습니다. ㅋ 그래야 생소한 개념인 시간-주파수 개념을 이해할수 있어요 ㅋㅋ


        <Figure 1. Spectrogram>

 

<Figure 2. MeshGrid>

이런식으로 나오는 그래프가 Spectrogram 이에요 ㅋㅋ

아래쪽에 보이는 Figure 2 는 Spectrogram 에서 얻은 정보를 MeshGrid 에 표현해 본 것입니다 ㅋ

이렇게 뿌리는 부분에 대해서는 차차 공부해보도록 해요 ㅋㅋ

1. Sampling 된 신호가 막연하게 길지만, 주기적이지 않을때 DFT 를 하기 위해서는 긴 시간을 기다리게 되는 경우
    가  발생한다.
2. 이렇게 오랜 시간을 기다려 spectrum 을 얻었다 하여도, 시간적인 변화의 많은 부분이, 계산된 spectrum 에
    나타나지 않는 한계를 갖는다.
3. 그래서, spectrum 성분이 변하지 않는 짧은 악절의 연속을 분석한다.
4. 이 개념을 공식화 하기 위해서, X[n] 매우 긴 신호라고 가정한다.

이런 순서로 STFT 가 나오게 된 것이지용 ㅋㅋ

한마디로 DFT 를 하는데, 원하는 윈도우를 정해서 적당히 옮겨가면서 계속 DFT 를 해서 시간영역에 따른 주파수 정보를 얻어내겠다 라는 것입니다.

어쩔수 없이 수식이 들어가야 하겠네요 ㅠㅠ

제가 공부하면서 정리해논 노트를 한번 짤라서 붙어넣어볼께요~


잘 보이시나용? ㅋ

글씨가 악필이라서 죄송합니다 ㅋㅋㅋㅋ

위에도 언급이 되어있지만, 시간에 대해서 계산된 스팩트럼들의 합이 STFT 인데 이것을 2차원적으로 표현하기에 무기가 있죠 ㅋㅋ.

그래서 Spectrogram 이라는 것이 나오게 되었어요 ㅋㅋ

아... 또 글이 엄청 길이지넴 ...

아직 이 글을 읽으시는 분들이 없지만, 분명히 읽는 분이 생기신다면,

이따위것 말고, 그러니까 이걸 어떻게 하는지 코드나 올려주라!! 하시는 분들이 대다수겠지요? ㅋㅋ

하지만 저도 해야할 연구가 남았기에 ~ ㅋㅋ

오늘 포스팅은 여기까지 ~ ㅋㅋ

다음번 포스팅에서는 그래서 Matlab 으로 어떻게 STFT 를 하는지,

그 결과 배열이 각각 어떤것을 의미하는지, 위의 Spectrogram, MeshGrid 는 어떻게 그리는지에 대해 설명하고

m-file 을 올려드리도록 할께용 ~ ㅋㅋㅋ

제가 공부하면서 정리해 놓은 PDF 파일도 함께~ ㅋㅋ

그럼 다음 포스팅에서 뵈요~

신고
Posted by J.Bear
크리에이티브 커먼즈 라이선스
Creative Commons License


첫번째 포스팅이네요 ~
이 글을 쓰기 위해서 그동안 얼마나 기다려 왔던지 ㅋㅠㅠ

공학을 하시는 분들이라면 진저리가 날만큼 싫어하는 사람이 몇 명 있지요 ㅋㅋ
그중에 최고는 Furier 이놈이 아닐까 싶습니다.
FT, DFT, FFT 어딜가나 이놈 이름이 들어가서 이제는 정말로 F 자만 보면 이게 Furier 의 약자가 아닌가 싶기도 하죠

오늘 다루어볼 개념은 약간 생소할 수도 있지만, STFT ( Short-Time Furier Transform) 이라는 개념입니다.
한글로는 '국소 푸리에 변환' 이라고 하더군요 ~ ㅋㅋ

기존의 푸리에 변환은 해당신호가 주파수 영역으로 보았을때 어떤 주파수의 성분을 얼만큼 가지고 있는지 매우
가시적으로 잘 표현해 줍니다.

이를 이용해서 신호의 분석을 아주 간지나게들 하는 연구들이 많지요 ㅋㅋ Data Acquisiton 후에 뭘 해야할지 모르면 일단 FFT 부터 해보고 시작하는 경우도 많으니까요 ㅋ

하지만 이런 FFT 의 맹점!!!! 이 있었으니~~~ ㅋㅋ

시간의 흐름에 따라 신호의 주파수가 변했을 경우에, 어느 시간대에 주파수가 어떻게 변했는지를 알수가 없다는 것이죠.

참으로 안구에 습기가 차는 일입니다.

잘 감이 안오시지요??? ㅋㅋ

아래와 같은 그림을 보시죠~


이렇게 시간에 따라서 주파수가 변하는 cos 신호를 만들어 보았어요. 앞에서 부터 7Hz, 14Hz , 21Hz, 28Hz 입니다.

5초에 한번씩 신호의 주파수가 변화하고 있어요 ㅋㅋ

이것을 FFT 하면 어떻게 될까요?

각각의 주파수 영역대에 맞추어서 피크를 보여주겠죠? ㅋㅋ

근데!!! 인간의 욕심이란 끝이 없습니다. ㅋㅋ

시간이 지남에 따라서 주파수가 변화하고 있으니까 우리는 0~5초까지는 7Hz, 5 -10초까지는 14Hz, 10~15초까지는 21Hz 이런식의 정보를 얻고 싶었던 것입니다.



 


어때요? ㅋㅋ 잘 나오지요? ㅋㅋ

제가 만든 코사인 신호의 Sampling Rate 가 100Hz 라서 ㅋㅋ 여튼 요따위로 나와용 ㅋㅋ

그럼 된거 아니야!! 라고 반문하시는 분들도 있을 꺼에요 ㅋㅋ

이 FFT 결과로만 보면 , 아 전체 신호에 7, 14, 21 28 Hz 성분의 신호가 있었구나~~ 라고만 알수 있지

몇초에 신호의 주파수가 변했는지를 알 수가 없자나요? ㅋㅋ

그래서 나오게 된 개념이 STFT 입니다 ㅋㅋ

이 것을 하면 이 신호가 몇초에 한번씩 변화 했는지를 알 수가 있어요 ㅋㅋ


그럼 STFT 의 자세한 방법에 대해서는 다음 포스팅에서 다루도록 할께요 ~ ㅋㅋ

제가 눈치보이는 석사 1학기 대학원 생이라서 길게 포스팅을 할수가 없어요 ㅋㅋ

그럼 일단 요기까지만 하고 다음에 이어서 올려드릴께용~ ㅋㅋ

첨부파일은 위의 내용에 해당되는 m-file 입니다 ㅋ 기본적이지만 필요하신분 참고하세요

신고
Posted by J.Bear


티스토리 툴바