2012-04-24 2 views
4

크기와 위상이 fft 결과의 실수 부와 허수 부에서 포착된다는 것을 알고 있습니다. 그러나 각 샘플 캡처 단계는 어떻게됩니까?복소수는 FFT 결과에서 위상, 진폭 및 주파수를 어떻게 포착합니까?

시간 도메인에서 제공되는 N 개의 개별 샘플과 관련된 단계가 있습니까?

즉, 입력 샘플이 초당 44100 샘플을 포함하면 FFT의 각 결과 값은 위상의 1/44100을 나타냅니다?

예를 들어, 첫 번째 FFT 값은 1/44100 주파수이고 두 번째 값은 2/44100입니다.

+0

위상을 원하는 것에 대해 좀 더 구체적으로 설명해야합니다. 예 : 어떤 단계? – hotpaw2

답변

4

질문의 일부 부분에서 "빈도"를 의미 할 때 "단계"라고 생각하십니까?

주파수에 관해 묻는다면 "입력"데이터에서 시간처럼 작동합니다. 당신은 각 배열 요소가 다른 시간에있는 시계열 데이터로 시작합니다. fft 후 "출력"은 비슷하지만 각 요소는 다른 주파수입니다.

등가 오프셋에서 가능한 한 가장 높은 주파수까지 일정한 단계로 표시되지만 실제 순서는 사용중인 구현에 따라 다를 수 있습니다. 각 복소수는 하나의 특정 주파수에서 진폭과 위상을 나타냅니다. 출력 배열의 위치에서 주파수를 계산할 수 있습니다.

시간 T를 커버하는 N 포인트가있는 경우 가장 높은 빈도는 N/(2T)이고 값은 1/T의 배수 (0Hz - 상수 오프셋 포함)입니다. 예를 들어, 1 분에 60 샘플 (N = 60 T = 60s)은 0.5Hz의 최고 주파수를 제공합니다. 데이터가 명확하게 추출 될만큼 샘플링되지 않기 때문에 더 높은 주파수가 없습니다 (예 : 1 Hz 신호는 각 샘플에서 최대 일 수 있으므로 일정한 신호로 나타납니다). 이 제한은 nyquist frequency

(출력은 복소수의 배열이라고 가정합니다. 종종 float/double 형식의 배열이며, 실수 값과 허수 값의 복소수를 array - 모든 것이 조금 복잡해 지지만 개념은 복잡한 값의 배열을 반환 한 것과 같습니다.

ps 일반적으로 어딘가에서 fft 루틴을 사용해야 할 때 상수 오프셋과 두 개의 알려진 주파수 사인파가있는 데이터를 만든 다음 결과를 살펴 봅니다. 각 구성 요소의 진폭을 다르게하면 물건을 정렬하는 방법이 일반적으로 분명합니다. 때로는 2π의 요소가 생략 되었기 때문에 눈금을 확인할 수도 있습니다 ...

+0

네, 이것이 제가 묻는 것입니다. 당신이 제 질문에 대답했다고 생각합니다. 나는 복소수의 출력 배열을 가지고 있습니다. 사실 N은 FFT에 공급되는 이산 시간 영역 샘플의 수인 N 개의 값을가집니다. 그래서 각 샘플의 HZ 값을 계산하는 방법을 묻습니다. 첫 번째 샘플은 1/4100 HZ이고 두 번째 샘플은 2/44100 HZ입니다. –

+0

루틴에 대한 문서를 읽어야합니다. 당신은 기본적인 아이디어를 가지고있다. (잘하면 모든 것이 이제는 의미가있을 것이다 : o), 실제 순서는 구현마다 다를 수있다. 오, 0Hz의 값도 있습니다 (상수 오프셋). –

+0

http://courseware.ee.calpoly.edu/~jbreiten/C/의 소스를 사용하고 있습니다. 가장 낮은 주파수 (1/44100)에서 가장 높은 주파수 (1HZ)로 이동한다고 가정하는 것이 안전할까요?마지막으로, 항상 1/NT라면, FFT는 1HZ 샘플보다 어떻게 더 높은가? 감사합니다 ... –

4

FFT의 출력은 고조파와 관련된 사인 성분의 합으로부터 원래의 파형을 재구성하는 방법을 간단히 나타냅니다.

각 출력 값은 해당 구성 요소의 진폭 및 위상 (즉, 오프셋 각도)을 나타냅니다. 각 구성 요소는 복잡한 정현파 (A * exp(j * 2pi * f * n + phi)이 아닌 A * cos(2pi * f * n + phi) 형식의 것)임을 유의해야합니다.

빈도는 출력 샘플의 색인에 내포되어 있습니다. fs (Hz)이고 길이가 N FFT 인 경우 출력 샘플 i에 해당하는 중심 주파수는 i*fs/N (Hz)입니다.

+0

fs는 무엇으로 표현됩니까? 내가 초당 44100 샘플의 샘플 속도를 가지고 있다고 가정하면, 어떤 값은 fs가 될까요? 귀하의 설명에서, 나는 N = 44100을 모범으로 삼았습니다. fs는 무엇입니까? –

+0

@stevelandiss : 명목상 Hz이지만 실제로는 주파수의 단위 일 수 있습니다. –

1

FFT 결과의 빈도는 결과 벡터의 복소수에 포착되지 않습니다. 빈도 승수는 복소수를 포함하는 각 배열 요소의 인덱스로 캡처됩니다.그런 다음 인덱스를 가져 와서 각 FFT 빈의 중심 주파수를 얻기 위해 시간 영역 샘플의 샘플 속도와 FFT 길이의 역수와 관련된 주파수 스케일 인수를 곱합니다.

각 FFT 결과 벡터 요소로 표시되는 각 주파수 사인 곡선은 다른 빈 또는 배열 요소와 공유되지 않는 자체 독립 위상을 갖습니다.

FFT의 길이를 모르면 빈도를 알 수 없습니다. 따라서 질문의 마지막 부분에 대한 대답은 알 수 없음 또는 아니오 일 수 있습니다.

4

단계는 입력 샘플에서 주기적 신호 성분의 시간 이동과 관련이 있습니다.

여기

먼저, 빠른 FT이산 FT는 단지 더 효율적인 방법으로 계산 같은 일이 정확히 리콜 ...이 참조하는 방법은 다음과 같습니다. 따라서, 기본으로 돌아와 우리는로서 정의되는 변환 가지고위한

X K (0 < = K < = N-1) = 합 0 < = N < = N-1 (X N * E -j * 2 * π * N * K/N)

:
가 X N은 입력 샘플들이
X 01,237,184,K는
N 이제 샘플

수, 복잡한 지수, 즉이 -j * 2 * π * N * k는/N은, 기하학적 원형의 점을 나타낸다 (출력/변환 샘플이다 아르 Re/Im 평면에서 반경 1, 중심에있는 (0,0)). 이 점을 잊어 버린 경우 Euler's formula을 참조하십시오.

고정 값이 k (출력/변환에서 특정 관심 빈도를 나타냄) 인 경우 모든 n에 대해이 원에 N/k 개의 별개 지점이 있습니다. 0 < < = N = N-1 (X N * E -j * 2 * π * N * K/N에 대한

: 다시, 식 중의 합계에

찾는 이 요컨대)

는 입력 신호 (X) N하여 원에 상기 점 (0,0 행 벡터)를 스케일링한다. 이 벡터를 길거나 짧게 만들고 있습니다. 그리고 나서 그들을 추가하고 있습니다.

그렇게 NN/k의주기를 갖는주기적인 신호를 포함 X, 그 신호의 모든 최대 값이 모두 원형상의 한 지점에 정렬되며 정렬 서로를 증폭하는 것이 발생하면. 신호의 최소값과 다른 모든 값도 기여합니다.

간단히 말하면, 입력 x n을 원 위에 감아 넣는 것입니다. 신호에주기적인 구성 요소가 있고 그주기가 "원주"(= 원의 점 수)와 일치하면 정렬 된 최대 값과 최소값으로 인해 해당 기간/빈도가 최고치가됩니다. 마침표가 "원주"와 일치하지 않으면 최대 값이 모든 곳에서 발생하고 서로 상쇄됩니다. 이것이 푸리에 변환의 본질입니다. 이것이 작동하는 방법 및 이유, 마법, 진정한 복잡한 수학, 로프를 릴에 간단하게 감은 것입니다.

당신이 얻은 위상은 k이며 모든 최대 값이 정렬 된 지점을 나타낼뿐입니다. x n의주기 신호를 샘플 단위로 이동하면 정렬 점도 이동하고 위상이 적절하게 변경됩니다.

그것은 기하학적 설명입니다.

이제 푸리에 변환의 수학적 속성과 같은 것을 볼 수 있습니다.

당신이 당신의 X N과 변환 X K = F {X N}이 경우, X의 변환 나노는 {X 나노} = F {X F 될 것입니다 n} * e -j * 2 * π * k * m/N = X k * e -j * 2 * π * k * m/N. 이를 shift theorem/property이라고합니다. 이것을 간단히 파생시킬 수 있어야합니다. 이 팩터는 -j * 2 * π * k * m/N이고 크기는 1이고 X 배수에 Xk을 곱하면 위상이 변합니다.

그리고 위상은 주파수와 관련이 없습니다.

또한하여 샘플링 된 신호 X N의 최대 주파수는 절반 샘플 속도 (실제로는 절반보다 단지 조금의 이하의 Nyquist sampling theorem 참조). 즉 FT는 22050 Hz 이상에서는 아무 것도주지 않을 것입니다. 왜냐하면 높은 주파수의 모든 정보가 샘플링에서 손실되기 때문입니다.

X k 값의 절반은 음수를 가진 구성 요소를 제공합니다. 그 이유는 k > N/2 때 원의 점 사이를 이동하는 방향이 바뀌기 때문입니다. 따라서 최대 주파수는 출력/변환에 너무 많은 샘플이 있더라도 샘플 속도의 절반보다 작습니다.