푸리에 변환(Fourier Transform)에 대해 쉽게 알아보자

목차

  1. 컨볼루션(Convolution) 정의를 쉽게 이해해보자
  2. 앨리어싱(Aliasing) 현상에 대해 쉽게 알아보자
  3. 푸리에 변환(Fourier Transform)에 대해 쉽게 알아보자(현재 포스팅)
  4. FIR(Finite Impulse Response) Filter에 대해 알아보자
  5. FIR(Finite Impulse Response) Filter를 설계 해보자 – 1편
  6. FIR(Finite Impulse Response) Filter를 설계 해보자 – 2편 샘플링(Sampling)

INTRO

이번에는 푸리에 변환을 보자. 푸리에 변환은 신호를 시간 관점이 아니라 주파수 관점에서 볼 때 쓰는 도구다. 예를 들어 50Hz sine wave나 cosine wave를 푸리에 변환하면, 50Hz 근처에 성분이 모여서 보인다.

이번 글에서는 시간 영역 신호를 x(t), 주파수 영역을 X(f)로 쓰겠다. 이 표기만 먼저 익혀두면 뒤에 나오는 수식이 덜 헷갈린다.

핵심은 단순하다. 이 신호 안에 어떤 주파수가 얼마나 들어 있나를 확인하는 도구라고 생각하면 된다. 오늘은 복소 지수, cosine, sine을 가지고 그 의미를 직접 보자.

오일러 식

푸리에 변환을 이해하려면 오일러 식부터 잡는 게 편하다. 오일러 식은 sine과 cosine을 복소지수 형태로 바꿔준다.

e^{j\theta} = \cos(\theta) + j\sin(\theta)

즉, 삼각함수를 복소수 표현으로 바꿀 수 있다. 푸리에 변환은 이 성질을 이용해서 신호를 주파수 성분으로 분해한다. 보통은 e^{j2\pi ft} 형태를 쓴다.

이 형태로 주파수 f를 넣어가며, 원래 신호와 얼마나 맞는지 확인하는 방식이라고 보면 된다.

푸리에 변환

푸리에 변환은 아래처럼 정의된다.

X(f) = \int_{-\infty}^{\infty} x(t)e^{-j2\pi ft}dt

푸리에 역변환은 아래와 같다.

x(t) = \int_{-\infty}^{\infty} X(f)e^{j2\pi ft}df

정의만 보면 감이 잘 안 온다. 그래서 바로 예시로 넘어가는 게 낫다.

복소 지수 예시

먼저 주파수 f_0만 가진 복소 지수 신호를 생각해보자.

x(t) = e^{j2\pi f_0 t}

이 신호의 푸리에 변환은 정확히 f_0 위치에만 성분이 생긴다.

X(f) = \delta(f-f_0)

즉, 한 주파수 성분만 깔끔하게 들어 있는 기준 신호라고 보면 된다. FFT로 보면 해당 주파수 근처에만 피크가 나타난다.

50Hz 복소 지수 신호의 시간 영역 그래프
50Hz 복소 지수 신호의 푸리에 변환 스펙트럼
푸리에 변환

예상한 것처럼 50Hz 한 곳에만 성분이 잡힌다.

Cosine의 푸리에 변환

이제 cosine으로 가보자. 오일러 식을 바꾸면 cosine은 복소지수 두 개의 합으로 쓸 수 있다.

\cos(2\pi f_0 t) = \frac{1}{2}\left(e^{j2\pi f_0 t} + e^{-j2\pi f_0 t}\right)

즉, cosine은 +주파수와 -주파수가 같이 들어 있는 형태다.

그래서 푸리에 변환하면 아래처럼 된다.

X(f) = \frac{1}{2}\delta(f-f_0) + \frac{1}{2}\delta(f+f_0)

의미는 간단하다. f_0-f_0에 각각 절반씩 들어 있다는 뜻이다.

실무에서는 보통 one-sided magnitude spectrum만 보는 경우가 많지만, negative frequency 자체가 사라지는 건 아니다. real signal의 완전한 표현을 생각하면 여전히 의미가 있다.

50Hz cosine wave의 시간 영역 그래프
cosine wave
50Hz cosine wave의 푸리에 변환 스펙트럼
푸리에 변환

그래서 spectrum을 보면 50Hz와 -50Hz에 성분이 각각 잡힌다.

Sine의 푸리에 변환

sine도 같은 방식으로 보면 된다. 오일러 식에서 두 식을 빼면 sine이 나온다.

\sin(2\pi f_0 t) = \frac{1}{2j}\left(e^{j2\pi f_0 t} - e^{-j2\pi f_0 t}\right)

따라서 sine 역시 +주파수와 -주파수 성분을 함께 가진다. 다만 cosine과는 위상과 부호가 다르다.

푸리에 변환 결과를 쓰면 아래처럼 된다.

X(f) = \frac{1}{2j}\delta(f-f_0) - \frac{1}{2j}\delta(f+f_0)

여기서 값이 허수로 보일 수 있는데, 너무 놀랄 필요는 없다. FFT에서는 보통 magnitude와 phase를 같이 보니까, 최종적으로는 크기와 위상을 함께 해석하게 된다.

즉, magnitude만 보면 sine도 cosine과 비슷하게 양쪽 주파수에 성분이 잡힌다. 차이는 phase에 있다. 그래서 크기만 보고 끝내면 반쪽만 본 셈이다.

50Hz sine wave의 시간 영역 그래프
50Hz sine wave의 푸리에 변환 스펙트럼
푸리에 변환

위에서 보는 것처럼 sine wave의 magnitude도 cosine과 비슷하게 보인다. 그래도 phase까지 보면 둘은 분명히 다르다.

결국 중요한 건 이거다. 푸리에 변환은 신호를 주파수 성분으로 쪼개서 보여준다. cosine과 sine은 모양은 달라도, 주파수 관점에서는 같은 축 위에서 해석할 수 있다.

오늘 내용만 기억하면 된다.

  • 복소 지수는 푸리에 변환의 기본 단위다.
  • cosine은 +f와 -f에 성분이 나뉜다.
  • sine도 마찬가지지만, 위상과 부호가 다르다.
  • FFT 결과는 magnitude와 phase를 같이 봐야 한다.

다음 포스팅부터는 이 성질을 바탕으로 필터를 어떻게 만드는지 이어서 보자. 여기까지 이해되면 FIR 같은 주파수 기반 필터가 훨씬 덜 낯설어질 것이다.

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.