연속 웨이블릿 변환(Continuous Wavelet Transform) 스케일과 주파수의 관계 그리고 예제
본문 바로가기

대학 과목/빔 포밍(Beam Forming)

연속 웨이블릿 변환(Continuous Wavelet Transform) 스케일과 주파수의 관계 그리고 예제

반응형

 이전 강의에서 웨이블릿 변환의 개념과 원리에 대해서 알아보았습니다. 이번에는 웨이블릿 변환 시 스케일과 주파수간의 관계 그리고 예제를 통해 마지막 정리를 해보겠습니다.

 

1. 웨이블릿 변환 스케일과 주파수의 관계

 이전 강의에서 잠깐 말씀드렸지만 스케일(크기)에 따라 주파수 변환이 어떻게 이뤄지는지 개념을 잡는 것이 상당히 중요합니다.

 우선 웨이블릿으로 자주 사용되는 Morlet을 사용해서 스케일과 주파수의 관계를 알아볼텐데 아래가 시간 도메인에서 Morlet wavelet 함수의 정의입니다.

 

반응형

 

Morlet wavelet 함수
Morlet wavelet 함수

 ψ(프사이)에서 Wo가 각주파수로 2 * pi * fc에서 주파수 fc성분이 있습니다. 여기에 우리는 일차적으로 주파수값을 넣을 수 있겠지요. 그리고 아래의 웨이블릿 함수에서 a의 크기를 변경시켜 가며 임의의 신호와 상관성을 찾을 것입니다.

Wavelet function
avelet function

 결국 fc와 a의 함수로 나타낼 수 있겠지요. a는 시간영역에서 윈도우의 크기를 결정하게 됩니다. 이전 강의 그림을 한 번 더 참조하면 빨간색, 파란색, 검은색의 Morlet wavelet 함수의 크기가 다른것을 알 수 있지요. 크기가 크면 저주파, 크기가 작으면 고주파와 상관관계가 커지게 됩니다.

Morlet wavelet 함수 그림
Morlet wavelet 함수 그림

  우리는 fc에서 만들어진 Morlet wavelet 함수에서 스케일에 따른 주파수 분석을 해야 원하는 주파수 분석이 가능해집니다. 결과적으로 아래의 것만 이해하시면 됩니다.

 (1) 임의의 신호 fc와 샘플링 주파수를 파악한다.

 (2) 임의의 신호 샘플링 주파수와 동일한 크기의 Morlet wavelet 함수를 만들 때 가장 상관관계가 높은 주파수는 fc/2 Hz 이다.

 (3) 임의의 신호 샘플링 주파수 절반 크기의 Morlet wavelet 함수를 만들 때 가장 상관관계가 높은 주파수는 fc/4 Hz이다.

Morlet wavelet 함수의 크기가 줄어들수록 고주파와 상응한다 하였지요. 만약  fc = 5 Hz, fs = 100 Hz의 신호가 있다면  Morlet wavelet 함수를 만들 때 가장 상관관계가 높은 값은 fc = 5 Hz, a = 200입니다. 하지만 우리는 원신호보다  Morlet wavelet 함수의 길이가 더 짧아야 하죠. 그렇기 때문에 fc = 1.25 Hz, a = 50에서 가장 큰 상관관계를 가집니다.

 이러한 상관성을 알 수 있다면, 스케일을 주파수로 변환 가능하겠지요?

 한번 예제 그림을 통해 (1), (2), (3) 조건을 이해해 봅시다.

 fc = 20 Hz, fs = 100 Hz의 cos 신호와 fc = 20 Hz, a = 50, 100, 200의 Morlet wavelet 함수는 아래와 같습니다.

 

 

 

fc = 20 Hz, fs = 100 Hz의 cos 신호와 fc = 20 Hz, a = 50, 100, 200의 Morlet wavelet 함수
fc = 20 Hz, fs = 100 Hz의 cos 신호와  fc = 20 Hz, a = 50, 100, 200의  Morlet wavelet 함수

 까만색의 fc = 20 Hz, a = 200일 때 유사도가 가장 높은 것을 알 수 있습니다. 하지만 신호의 길이보다 a = 200일 때가 더 크기 때문에 사용할 수 없습니다. 그러면 (3)의 조건을 빌어 5 Hz에서 50, 100, 200일 때 조건에서 한번 위의 그림과 동일하게 나타내 보겠습니다.

fc = 20 Hz, fs = 100 Hz의 cos 신호와 fc = 5 Hz, a = 50, 100, 200의 Morlet wavelet 함수
fc = 20 Hz, fs = 100 Hz의 cos 신호와 fc = 5 Hz, a = 50, 100, 200의 Morlet wavelet 함수

 빨간색의 fc = 5Hz, a =50일 때 상관성이 가장 비슷해 보이죠? 이전에 배운 convolution을 해보겠습니다.

convolution 결과
convolution 결과

 역시나 빨간색에서 가장 높은 상관성이 나타나는 것을 알 수 있습니다.

 이렇게 우리는 각 스케일마다 주파수 성분을 어떤 비율로 나타내야 되는지 알았으므로 얼마든지 주파수로 변화시킬 수 있겠지요.

 

2. Continuous Wavelet Transform

 앞서 우리는 Wavelet Transform에 필요한 모든 과정을 다 이해하였습니다. 이제 마무리로 CWT 함수를 구연해 보도록 하겠습니다. DWT(Discrete Wavelet Transform)은 차 후에 시간이 되면 한번 강의하도록 하겠습니다.

 우선 Pseudo-code를 작성할 수 있어야 하는데 scale factor를 파라미터로 받는 웨이블릿에 대해 scale factor를 바꿔가며 임의의 신호와 컨볼루션 연산을 반복합니다. 위에서도 scale factor를 바꿔가며 컨볼루션 연산을 이미 하였습니다.

 시뮬레이션 파라미터는 아래와 같습니다.

 (1) 생성신호 : [fc1 = 20 Hz, fs = 200, 0.25초], [fc1 = 30 Hz, fs = 200, 0.25초], [fc1 = 40 Hz, fs = 200, 0.5초]

 각 시간마다 대응하는 주파수 성분이 1초 안에 구성된 것을 볼 수 있습니다.

 

 

생성 신호
생성 신호

  (2) 위 신호 FFT

 FFT 결과를 보면 20, 30, 40 Hz 성분이 탐지는 되나 어느 시점인지는 알 수는 없지요.

위 신호 FFT
위 신호 FFT

 (3) 위 신호 STFT

 STFT 결과를 보면 각 시간마다 신호가 분리되는 것 같지만 20 Hz와 30 Hz 구간이 뭔가 애매하지요.

위 신호 STFT
위 신호 STFT

 (4) 위 신호 CWT

 CWT 결과를 보시면 어느 시점에 각 주파수들이 존재하는지 좀 더 정확히 구분할 수 있습니다. 각 해상도를 올릴 수 있는 방법들은 많이 있습니다.

위 신호 CWT
위 신호 CWT

 위 CWT 결과에서 잡음 등을 제거하기 위한 기법으로 변경해서 사용하려면 100~200 sample 구간에 뭔가 내가 원하지 않는 신호가 있으면 그 부분을 Threshold 하거나 필터링하면 됩니다. 간단하지요.

 

[참조] 원프레딕트 기술 블로그

반응형

.link_tit