English
Sensors & Time Series

Signal Processing신호 처리

센서는 연속적인 세상을 띄엄띄엄 숫자로 옮깁니다. 몇 번 재야 하는지, 숫자 줄을 주파수로 어떻게 읽는지, 원하는 부분만 어떻게 남기는지를 직접 만지며 봅니다.

표본화와 앨리어싱

센서는 신호를 1초에 fs번 잽니다(표본화 주파수). 표본만 남으면 그 사이 값은 사라지고, 주파수가 fs/2(나이퀴스트 주파수)보다 높은 성분은 더 낮은 주파수와 구별할 수 없게 됩니다. 이것이 앨리어싱입니다. 표본화 정리는 fs/2 아래의 성분만 있으면 표본만으로 원래 신호를 정확히 되살릴 수 있다고 말합니다.

그래서 실제 장비는 표본화 전에 아날로그 저역 필터로 fs/2 위를 먼저 지웁니다. 표본을 얻은 뒤에는 앨리어싱을 되돌릴 수 없습니다.

x[n] = x(n/fs) · falias = |f − fs·round(f/fs)| · x(t) = Σ x[n]·sinc(fst − n) (f < fs/2)

체험: 주파수와 표본화 주파수

회색이 원래 사인, 파란 점이 표본, 금색이 표본만으로 복원한 곡선(sinc 보간)입니다. f를 fs/2보다 올리면 금색 곡선이 전혀 다른, 더 느린 사인이 됩니다. 아래 그림은 원래 주파수마다 표본에서 보이는 주파수입니다. 눌러서 f를 바꿀 수 있습니다.

체험: 영화 속 수레바퀴

카메라도 초당 몇 장씩 찍는 표본화입니다. 살이 6개인 바퀴는 60° 돌 때마다 같은 모습이라, 한 장 사이에 60°보다 조금 덜 돌면 거꾸로 도는 것처럼 보입니다. 왼쪽은 매끄러운 실제 회전, 오른쪽은 초당 몇 장으로만 다시 그린 것입니다.

요약표본은 fs/2 아래만 정직하게 담습니다.그 위의 성분은 낮은 주파수로 접혀 들어와 진짜와 구별되지 않습니다.막는 방법은 표본화 전 필터와 충분히 높은 fs뿐입니다.

참고문헌

  1. Shannon, C.E. (1949). Communication in the presence of noise. Proceedings of the IRE 37(1).
  2. Nyquist, H. (1928). Certain topics in telegraph transmission theory. Transactions of the AIEE 47(2).
  3. Oppenheim, A.V., Schafer, R.W. (2010). Discrete-Time Signal Processing (3rd ed.), ch. 4. Pearson.

푸리에 변환

어떤 숫자 줄도 여러 주파수의 사인을 더한 것으로 쓸 수 있습니다. 이산 푸리에 변환(DFT)은 N개의 표본을 N개의 주파수 성분으로 바꾸고, FFT는 이를 N log N 번의 계산으로 합니다. 주파수 간격은 fs/N, 곧 기록 길이의 역수입니다. 더 촘촘히 보려면 더 오래 재야 합니다.

기록이 사인의 주기와 딱 맞지 않으면 에너지가 이웃 칸으로 번집니다(누설). 기록 양 끝을 0으로 부드럽게 줄이는 창(Hann, Blackman)을 곱하면 먼 칸으로의 누설은 크게 줄고, 대신 봉우리가 넓어집니다.

X[k] = Σn=0N−1 x[n]·e−i2πkn/N · fk = k·fs/N · Σ|x[n]|² = (1/N)·Σ|X[k]|²

체험: 스펙트럼을 눌러 신호 만들기

아래 스펙트럼의 빈 곳을 누르면 그 주파수와 높이의 사인이 더해지고, 봉우리를 누르면 빠집니다. 위의 시간 신호가 바로 바뀝니다. 사각파 버튼은 홀수 배음 1/k를 더해 사각파에 가까운 모양을 만듭니다.

체험: 누설과 창

큰 사인(진폭 1) 옆에 아주 작은 사인(30 Hz)이 있습니다. 큰 사인의 주파수가 칸 사이에 걸리면, 직사각 창(아무것도 안 곱함)에서는 누설이 작은 사인을 덮어 버립니다. Hann이나 Blackman 창으로 바꿔 보세요. 세로축은 dB(20 log₁₀ 진폭)입니다.

창
요약스펙트럼은 신호를 사인의 합으로 다시 쓴 것입니다.주파수 간격은 기록 길이의 역수입니다.창은 먼 누설과 봉우리 폭을 맞바꿉니다.

참고문헌

  1. Cooley, J.W., Tukey, J.W. (1965). An algorithm for the machine calculation of complex Fourier series. Mathematics of Computation 19(90).
  2. Harris, F.J. (1978). On the use of windows for harmonic analysis with the discrete Fourier transform. Proceedings of the IEEE 66(1).
  3. Smith, J.O. (2011). Spectral Audio Signal Processing. W3K Publishing (online).

디지털 필터

필터는 지난 입력(과 지난 출력)에 계수를 곱해 더하는 식 하나입니다. 같은 식이 주파수마다 다른 배율(이득)과 다른 늦음(위상)을 줍니다. 이동 평균과 지수 평균은 가장 흔한 저역 필터지만 잘 지우지 못하는 주파수가 남고, 창 씌운 sinc FIR과 버터워스 IIR은 차단 주파수 위를 더 깨끗하게 지웁니다.

실시간으로 쓰는 필터는 미래 값을 볼 수 없어 반드시 늦습니다. 기록을 다 받은 뒤라면 앞으로 한 번, 뒤로 한 번 걸어 늦음을 없앨 수 있습니다(zero-phase).

y[n] = Σk bk·x[n−k] − Σk≥1 ak·y[n−k] · H(f) = Σ bke−i2πfk/fs / Σ ake−i2πfk/fs

체험: 차단 주파수를 끌어 필터 고르기

입력은 남기고 싶은 2 Hz 사인, 지우고 싶은 25 Hz 사인, 잡음의 합입니다(초당 200 표본). 필터 종류를 고르고 위 주파수 응답 그림을 누르거나 슬라이더로 차단 주파수를 옮겨 보세요. 아래가 실제로 걸러 낸 결과입니다.

종류

체험: 실시간 필터는 늦는다

위에서 고른 필터를 계단과 짧은 펄스에 걸었습니다. 금색은 실시간처럼 앞으로만 건 것, 파란색은 기록을 다 받은 뒤 앞뒤로 두 번 건 것입니다. 실시간 필터는 계단을 늦게 따라가고, 버터워스는 계단을 조금 넘쳤다 돌아옵니다. 앞뒤로 두 번 건 결과는 늦지 않지만, 출력이 계단보다 먼저 오르기 시작합니다. 미래 값을 쓰기 때문입니다.

요약필터 하나가 주파수마다 이득과 지연을 정합니다.이동 평균은 쉽지만 차단이 엉성합니다.실시간이면 늦음을 받아들이고, 기록 처리면 앞뒤로 걸 수 있습니다.

참고문헌

  1. Butterworth, S. (1930). On the theory of filter amplifiers. Experimental Wireless and the Wireless Engineer 7.
  2. Bristow-Johnson, R. Cookbook formulae for audio EQ biquad filter coefficients (Audio EQ Cookbook).
  3. Smith, S.W. (1997). The Scientist and Engineer’s Guide to Digital Signal Processing, ch. 15–16 (moving average, windowed-sinc). California Technical Publishing.
  4. Gustafsson, F. (1996). Determining the initial states in forward-backward filtering. IEEE Transactions on Signal Processing 44(4).

스펙트로그램

주파수가 시간에 따라 바뀌는 신호는 짧은 창으로 잘라 창마다 FFT를 합니다(단시간 푸리에 변환). 세로가 주파수, 가로가 시간, 밝기가 세기인 그림이 스펙트로그램입니다. 창이 짧으면 언제 일어났는지는 잘 보이지만 주파수가 뭉개지고, 창이 길면 그 반대입니다. 두 해상도를 함께 좋게 할 수는 없습니다.

X(m, k) = Σn x[n + mH]·w[n]·e−i2πkn/N · Δt = N/fs · Δf = fs/N · Δt·Δf = 1

체험: 창 길이를 바꿔 보기

시험 신호(초당 8,000 표본, 2초): 300 Hz에서 1,700 Hz로 오르는 처프, 0.5초에 20 ms짜리 2,500 Hz 짧은 소리, 1.2초부터 1,000 Hz와 1,060 Hz 두 음. 창이 짧으면 짧은 소리는 또렷하지만 두 음이 하나로 뭉치고, 길면 두 음이 갈라지지만 짧은 소리가 옆으로 번집니다.

창

체험: 그린 대로 소리 내기

위 칸에 시간에 따른 주파수 경로를 끌어 그리면, 그 경로대로 사인의 위상을 쌓아 소리를 만들고 스펙트로그램을 그립니다. 들어 보기로 소리를 낼 수 있습니다. 마이크 버튼은 2초를 녹음해 같은 방법으로 그립니다(브라우저 안에서만 계산하고 저장하지 않음).

요약스펙트로그램은 짧은 창마다의 스펙트럼을 이어 붙인 것입니다.시간 해상도와 주파수 해상도는 서로 맞바꿉니다(Δt·Δf = 1).무엇을 보려는지에 맞춰 창 길이를 고릅니다.

참고문헌

  1. Gabor, D. (1946). Theory of communication. Journal of the IEE 93(26).
  2. Allen, J.B. (1977). Short term spectral analysis, synthesis, and modification by discrete Fourier transform. IEEE Transactions on ASSP 25(3).
  3. Oppenheim, A.V., Schafer, R.W. (2010). Discrete-Time Signal Processing (3rd ed.), ch. 10. Pearson.

교육용 페이지입니다. 신호는 모두 브라우저에서 만든 것이며, 마이크 녹음은 이 화면에서만 계산하고 어디에도 보내거나 저장하지 않습니다.