FFT가 실제로 당신을 보여줍니다
듣는 모든 소리는 사인파의 합입니다. 빠른 Fourier Transform decomposes 그 합계. 그것이 작동하는 방법, 그리고 왜 60 세의 알고리즘이 여전히 어디에 있는지.
자주 묻는 질문
피아노에서 콜드를 재생 — 말, C 및 E 함께. 귀가 한 소리를 듣습니다. 그러나 그 소리는 2개의 빈도 superimposed입니다: 261.6 Hz와 329.6 Hz. 당신의 cochlea 물리적으로 그들 분리 - 다른 frequencies에 다른 머리 세포 resonate, 당신의 두뇌에 명백한 신호를 보내는.
빠른 Fourier Transform은 같은 것을 수행하지만, 머리 세포 대신 숫자. 신호 (시간 이상 진폭 샘플의 순서) 및 그것은 주파수의 목록을 반환하고 그들의 힘. 그것은 답변 : ** 어떤 빈도가 존재하고, 얼마나 많은 각? **
사실 Happening
시간이 지남에 따라 샘플링 된 신호는 번호의 목록입니다. 각 샘플 포인트의 진폭. 44,100 Hz에서 1초 녹음은 44,100 숫자입니다. 이 숫자는 time Domain의 신호를 설명합니다. — amplitude as a function of time.
FFT는 ** 주파수 도메인 ** - 주파수의 기능으로 진폭을 변환합니다. 동일한 정보, 다른 표현. Cartesian과 polar 좌표 사이의 전환처럼 : 아무것도 생성되거나 파괴되지 않습니다.
수학 중핵: 각 정기적인 신호는 다른 frequencies에 사인과 코신파의 합계로 기록될 수 있습니다. 이것은 Fourier의 theorem (1807)입니다. FFT는 그 합계의 계수를 계산합니다 - 각 주파수의 얼마나 많은 신호에 있습니다.
왜 "빠른"
네이처 변형을 준수하는 네이티브 방법 N2 N 샘플 작업. 1024 샘플의 경우 약 1 백만 작업입니다. Cooley-Tukey 알고리즘 (1965)은 N·log2(N)에 이를 감소시킵니다. — 동일한 입력에 대해 10,000개의 작업에 대해. 100x 속도. 백만개의 표본을 위해, speedup는 50,000x입니다.
속눈썹: N 포인트를 두 개의 N/2 포인트로 변환, 반복적으로. N는 2의 힘이어야 합니다 (또는 0s를 가진 패드). 각 균열은 문제를 halves. "butterfly"작업은 반쪽을 결합합니다
X[k] = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]
W는 복잡한 exponential (단면에서 회전)입니다. 동일한 2개의 sub-results는 당신에게 2개의 산출 점을 줍니다. 이것은 알고리즘이 "빠른"입니다 - 그것은 두 번 모든 계산을 재사용합니다.
PinePaper의 구현은 textbook Cooley-Tukey radix-2 DIT (시간)입니다. JavaScript의 40 라인. 우리는 학생이 소스를 읽을 수 있기 때문에 도서관을 수입하는 것보다 스크래치에서 그것을 썼고 각 라인을 이해합니다.
그 바가 의미하는 것
스펙트럼 분석기를 볼 때 - 음악에 점프 바 - 각 바는 주파수 빈을 나타냅니다. 고도는 현재 신호에 있는 그것의 빈도의 크기 (힘)입니다.
- ** 순수한 사인 파동 **는 그 주파수에서 하나의 키 큰 막대를 생산하고 다른 아무것도.
- ** 평방 파 ** 기본 및 모든 확률 조화 (3rd, 5th, 7th ...)에 막대를 생산, 1 / n로 감소. 이것은 왜 광장 파도 소리 "버디"- 그들은 순수한 죄가하지 않는 고주파 에너지를 포함.
- ** White noise**는 모든 곳에서 동일한 높이의 막대를 생성합니다. 모든 빈도는 동등한 확률로 선물됩니다.
- ** 인간 목소리**는 기본적인 (당신은 소리를 들 수 있는 피치) 플러스 formants — vowels를 구별하는 당신의 보컬 트랙의 모양에서 공명 피크.
Windowing: 왜 가장자리 매트
캐치가 있습니다. FFT는 신호가 영원히 반복합니다. 그러나 우리의 샘플은 무한하다 — 그것은 시작하고 중지합니다. 신호가 두 종점에서 0에 일어나지 않는 경우에, abrupt cutoff는 인공 고주파 내용을 창조합니다. 이것은 ** 스펙트럼 누설 **라고합니다.
수정 : ** 창 기능으로 신호를 곱 ** 가장자리에서 0으로 부드럽게 테이퍼합니다. 일반적인 창:
- **Hann ** (코신 종) : 좋은 다목적, 일부 주파수 해상도를 잃는다
- Hamming: Hann과 유사하지만 가장자리에서 0에 도달하지 않습니다, 약간 더 나은 sidelobe 억제
- Blackman: 더 좁은 메인 로브, 더 나은 sidelobe 억제, 더 많은 빈도 해결책을 잃습니다
선택은 항상 주파수 해상도 사이의 거래 (어떻게 주파수를 식별 할 수 있음) 및 스펙트럼 누설 (어떻게 이웃 궤에 에너지 bleeds). 완벽한 창이 없습니다. 이것은 불확실한 원리의 결과입니다 — 당신은 동시에 시간과 빈도의 arbitrarily 정확한 지식이 있을 수 없습니다.
FFT 라이브
FFT 결과와 상호 작용:
- MP3 및 AAC 압축: 오디오를 주파수 영역으로 변환하고, 청각 임계값의 밑에 주파수를 출력하고, 어떤 남아 있는지 압축합니다. 변환은 손실 오디오 압축의 전체 기초입니다.
- **JPEG 압축 ** : 2D 버전 (DCT)은 8 × 8 픽셀 블록을 주파수 영역으로 변환하여 고주파 구성 요소를 할당합니다. JPEG artifacts가 블록으로 나타납니다.
- **WiFi 및 5G ** : OFDM 인코딩은 많은 주파수 서브카리어를 통해 데이터를 분할합니다. FFT는 time-domain 전송과 주파수 도메인 데이터 기호 사이에서 변환합니다.
- ** MRI 이미징 **: MRI 스캐너의 원시 신호는 주파수 공간에 있습니다. inverse FFT는 공간 이미지를 재구성합니다. 문학 : 당신이 본 모든 MRI는 역동적 인 포니어 변환입니다.
- Shazam: spectrogram (FFT over 슬라이딩 윈도우)를 컴파일, 피크를 추출, 데이터베이스에 대한 패턴 일치. FFT는 각 곡을 인식하는 첫 번째 단계입니다.
60 세의 알고리즘, 주머니에서, 하루에 수십억 번 실행.
{{widget:기능 배포}}
다운로드
PinePaper를 열고, 스펙트럼 분석기 발전기를 선택하십시오. 사각형 파 생성. 바에 봐 - 당신은 1 / N로 떨어지는 확률 조화를 볼 수 있습니다. Sawtooth로 전환 - 이제 모든 조화는 현재 1 / N로 떨어지는 것입니다. 소음으로 전환 - 평평한 스펙트럼, 모든 주파수는 똑같이 가능성이 있습니다.
창 기능 변경. Hann이 더 넓은 피크 비용으로 스펙트럼을 매끄럽게 보여줍니다. Blackman로 전환 - 더 좁은 피크하지만 더 낮은 sidelobes.
FFT에 대해 읽지 않습니다. 신호를 측정하고 변환이 밝혀지는 것을 관찰합니다. 그것은 아는과 이해의 차이입니다.
이름 *
- Brigham, E.O. (1988). * 빠른 Fourier Transform 및 그 응용 프로그램 *. Prentice 홀.
- Cooley, J.W. & Tukey, J.W. (1965). Complex Fourier 시리즈의 기계 계산을위한 알고리즘. * Computation*, 19(90), 297-301의 수학.
- 니어, J. (1822). Théorie analytique de la chaleur. 파리: 펌진 디트로.
- 해리스, F.J. (1978). Discrete Fourier Transform과 Harmonic Analysis를 위한 Windows의 사용. * IEEE*, 66(1), 51-83의 지원.
- Oppenheim, A.V. & Schafer, R.W. (2009). Discrete-Time Signal Processing (3차). Prentice 홀.
- 샤인비, C.E. (1949). 소음의 존재에 대한 통신. IRE, 37(1), 10-21의 프로세싱.
- 스미스, SW. (1997). Scientist와 엔지니어의 Digital Signal Processing 가이드. 캘리포니아 기술 출판.
- 왕, A., 외. (2003). Industrial-Strength 오디오 검색 알고리즘. * ISMIR 2003*의 프로그램. (Shazam의 오디오 지문 알고리즘.)
- Wallace, G.K. (1991). JPEG 아직도 그림 압축 기준. ACM, 34(4), 30-44의 커뮤니케이션.
PinePaper의 FFT는 Hann, Hamming 및 Blackman windowing, plus low-pass 및 high-pass 필터와 함께 Cooley-Tukey radix-2 구현입니다. pinepaper.studio/editor에서 무료로 시도하세요.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor