분석 (DFT)이 아닌 합성 (IDFT) 동안 크기가 정규화되는 이유는 무엇입니까?


17

내가 본 대부분의 예제와 FFT 코드에서, 순방향 DFT 연산의 출력 (주파수 크기)은 N으로 스케일됩니다. 즉, 각 주파수 빈의 크기를 제공하는 대신 N의 크기를 제공합니다.

연산적으로, 이는 단순히 각 기본 사인 (즉, 정규화되지 않은 상관 관계)으로 신호의 내부 곱을 가져 와서 DFT가 계산되기 때문입니다. 그러나 그것은 출력을 반환하기 전에 왜 N으로 나누지 않는가에 대한 철학적 질문에 답하지 않습니다 .

대신, 대부분의 알고리즘은 재 합성시 N으로 나눕니다.

이것은 나에게 반 직관적 인 것처럼 보이고 (내가 뭔가를 누락하지 않은 한) DFT에 대한 모든 설명을 매우 혼란스럽게 만듭니다.

내가 상상할 수있는 모든 시나리오에서 실제 크기 (크기 * N 아님)는 DFT 작업에서 필요한 값이고 정규화 된 크기는 IDFT 작업에 입력하려는 값입니다.

DFT가 DFT / N으로 정의되지 않고 IDFT가 정규화 된 크기 정현파의 단순한 합으로 정의 된 이유는 무엇입니까?


2
솔직히 이것이 이것이 가장 멋진 질문 중 하나라고 생각합니다.
Phonon

답변:


9

DFT의 출력을 정방향 또는 역방향으로 확장하든 관계없이 규칙 또는 수학적으로 편리한 것과 관련이 없습니다. DFT 입력과 관련이 있습니다. 순방향 변환과 역변환 모두에 스케일링이 필요하거나 필요하지 않은 몇 가지 예를 보여 드리겠습니다.

순방향 변환을 1 / N으로 스케일링해야합니다.

우선, 간단한 사인파를 분석하려면 변환 길이가 수학적으로 말해서 관련이 없어야한다는 것이 분명해야합니다. N = 1024, Freq = 100이라고 가정하고 신호는 다음과 같습니다.

f (n) = cos (Freq * 2 * Pi * n / N)

f (n)의 1024 포인트 DFT를 취하면 bin [100] = 512입니다. 그러나 이것은 N으로 스케일링 할 때까지 의미가 없습니다. 512/1024 = 1/2 그리고 물론, 다른 1/2은 bin [924]의 음의 스펙트럼에 있습니다.

DFT의 길이를 두 배로 늘리면 N = 2048이면 출력 값은 1024 포인트 DFT보다 두 배가되므로 1 / N으로 스케일링하지 않으면 결과는 의미가 없습니다. DFT의 길이는 이러한 종류의 분석에 영향을 미치지 않아야합니다. 따라서이 예에서는 DFT를 1 / N 씩 스케일 스케일해야합니다.

정방향 변환을 스케일하지 않아야합니다.

이제 32 탭 FIR 필터의 임펄스 응답이 있고 주파수 응답을 알고 싶다고 가정하십시오. 편의상 이득이 1 인 저역 통과 필터를 가정합니다.이 필터의 경우 DFT의 DC 구성 요소는 1이어야한다는 것을 알고 있습니다. DC 성분이 단순히 입력 값의 합 (즉 FIR 계수의 합)이기 때문에 DFT.

따라서이 입력의 경우 DFT는 1 / N으로 스케일링되지 않으므로 의미있는 답변을 얻을 수 있습니다. 그렇기 때문에 변환 결과에 영향을주지 않고 원하는만큼 임펄스 응답을 제로 패딩 할 수 있습니다.

이 두 예의 근본적인 차이점은 무엇입니까?

대답은 간단합니다. 첫 번째 경우, 모든 입력 샘플에 에너지를 공급했습니다. 다시 말해 사인파가 1024 개 샘플 모두에 존재하므로 DFT의 출력을 1/1024로 스케일링해야했습니다.

두 번째 예에서는 정의에 따라 1 개의 샘플 (n = 0의 임펄스)에 대해서만 에너지를 공급했습니다. 임펄스가 32 탭 필터를 통과하는 데 32 개의 샘플이 필요했지만이 지연은 관련이 없습니다. 1 개의 샘플에 에너지를 공급 했으므로 DFT의 출력을 1 씩 스케일링합니다. 임펄스가 1 대신 2 개의 에너지 단위로 정의 된 경우 출력을 1/2로 스케일링합니다.

역변환을 스케일하지 않아야합니다.

이제 역 DFT를 고려해 봅시다. 순방향 DFT와 마찬가지로 에너지를 공급하는 샘플 수를 고려해야합니다. 물론 양수와 음수 빈을 모두 적절히 채워야하므로 여기에서 좀 더주의를 기울여야합니다. 그러나 두 개의 적절한 빈에 임펄스 (즉, 1)를 배치하면 역 DFT의 결과 출력은 역 DFT에서 사용하는 포인트 수에 관계없이 진폭이 2 인 코사인 파가됩니다.

따라서 순방향 DFT와 마찬가지로 입력이 임펄스 인 경우 역 DFT의 출력을 스케일링하지 않습니다.

역변환을 스케일링해야합니다.

이제 저역 통과 필터의 주파수 응답을 알고 역 임펄스 응답을 얻기 위해 역 DFT를 수행하려는 경우를 고려하십시오. 이 경우 모든 지점에서 에너지를 공급하기 때문에 DFT의 출력을 1 / N으로 조정하여 의미있는 답변을 얻을 수 있습니다. 입력 값이 복잡하기 때문에 이것은 분명하지 않지만 예제를 통해 작업하면 이것이 사실임을 알 수 있습니다. 1 / N으로 스케일링하지 않으면 N 순서로 피크 임펄스 응답 값을 가지게되는데, 게인이 1 인 경우에는 불가능합니다.

방금 자세히 설명한 네 가지 상황은 DFT의 출력을 확장하는 방법이 분명한 엔드 포인트 예제입니다. 그러나 끝점 사이에 많은 회색 영역이 있습니다. 다른 간단한 예를 살펴 보겠습니다.

N = 1024, Freq = 100 인 다음 신호가 있다고 가정합니다.

f(n) = 6 * cos(1*Freq * 2*Pi * n/N)  n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N)  n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N)  n = 896 - 1023

시간 영역

세 가지 구성 요소의 진폭, 주파수 및 지속 시간 차이를 확인하십시오. 불행하게도,이 신호의 DFT는 두 번째 구성 요소가 다른 두 구성 요소의 1/36 전원 레벨을 갖더라도 동일한 전원 레벨에서 세 가지 구성 요소를 모두 표시합니다.

창없는 Freq 도메인

세 가지 구성 요소가 모두 같은 양의 에너지를 공급한다는 사실은 명백하며 DFT 결과를 설명하지만 중요한 점이 있습니다.

다양한 주파수 구성 요소의 지속 시간을 알고 있으면 그에 따라 다양한 주파수 빈을 확장 할 수 있습니다. 이 경우 DFT의 출력을 정확하게 스케일링하기 위해이 작업을 수행합니다. bin [100] / = 128; 빈 [200] / = 768; 빈 [400] / = 128;

내 마지막 요점을 알려줍니다. 일반적으로 DFT 입력에 특정 주파수 성분이 얼마나 오랫동안 존재하는지 모릅니다. 따라서 이러한 종류의 스케일링을 수행 할 수 없습니다. 그러나 일반적으로 모든 샘플 포인트에 에너지를 공급하므로 신호를 분석 할 때 순방향 DFT를 1 / N 씩 스케일링해야합니다.

문제를 복잡하게하기 위해, 우리는 DFT의 스펙트럼 분해능을 향상시키기 위해이 신호에 윈도우를 거의 확실히 적용 할 것입니다. 첫 번째와 세 번째 주파수 성분은 신호의 시작과 끝에 있기 때문에 27dB 감쇠되며 중앙 성분은 4dB 만 감쇠됩니다 (Hanning window).

창 스펙트럼

명확하게하기 위해, DFT의 출력이 될 수 축소 여부, 입력의 매우 가난한 표현입니다.

알 수없는 신호의 분석과 달리, 일반적으로 순수한 수학 문제인 역 DFT의 경우 DFT에 대한 입력이 명확하게 정의되므로 출력 스케일링 방법을 알 수 있습니다.

스펙트럼 분석기, 아날로그 또는 FFT로 신호를 분석 할 때 문제는 비슷합니다. 듀티 사이클을 모르면 표시되는 신호의 전력을 모릅니다. 그럼에도 불구하고, 윈도 잉, 스팬, 스위프 레이트, 필터링, 검출기 유형 및 기타 요소는 모두 결과를 떨어 뜨리기 위해 작동합니다.

궁극적으로 시간 도메인과 주파수 도메인 사이를 이동할 때는 매우주의해야합니다. 스케일링에 관한 질문은 중요하므로 출력 스케일링 방법을 알기 위해서는 DFT에 대한 입력을 이해해야한다는 점을 분명히했으면합니다. 입력이 명확하게 정의되지 않은 경우 DFT의 출력은 스케일링 여부에 관계없이 많은 회의론으로 간주되어야합니다.


포괄적이고 자세한 정보를 위해이 답변을 선택했지만 직관적 인 개요를위한 Phonon의 훌륭한 답변도 참조하십시오.
bryhoyt

9

나는 계산 정밀도 문제와 관련된 몇 가지 이유를 생각할 수 있지만 수학적으로 우리는 그것이 무엇이든 상관없이 동일한 방식으로 정의하기 때문에 정의를하지 않을 것입니다. 수학은 정밀도 문제를 알지 못합니다.

여기에 내가 가져 가라. 신호 처리의 의미에서 DFT가 의미하는 바에 대해 개념적으로 생각해 보자. 이 경우 DFT를 신호와 시스템에 적용하면 다른 결과를 볼 수 있습니다.

예를 들어, 값 1의 일정한 신호에 DFT를 적용 해 봅시다.이 신호의 길이는 유한하며 16 탭 길이라고 가정하겠습니다. 이 경우 DFT에서 무엇을 원하십니까? 분명히, 우리는 신호의 각 주파수 성분이 갖는 진폭을 알려주기를 원합니다. 분명히 신호는 주파수 0과 진폭 1의 단일 구성 요소를 갖습니다. 그러나 DFT는 빈 0과 높이 16에서 단일 피크를 제공합니다! 이 경우 DFT 정의에 대한 불만은 완벽합니다. 합성 계수가 아닌 분석 계수를 스케일링해야합니다.

자, 이제 같은 숫자 배열, 즉 16 개의 문자열을 분석하지만이 경우 시스템으로 분석해 봅시다. 시스템의 주파수 응답이 개념적으로 무엇을 원합니까? 대부분의 사람들은 입력과 비교하여 출력의 진폭, 즉 전달 함수라고 말합니다. 이 경우, 단일 진폭 DC 신호를 시스템에 공급하고 정상 상태 응답의 진폭을 살펴 보자. 음, 두 개의 일정한 16- 탭 신호를 함께 연결하면 과도 램프와 진폭 상태의 DC 신호 인 정상 상태 출력이 이어집니다. 이 경우 비 스케일링 분석 변환에 대한 정의가 다른 것보다 더 의미가 있습니다.

하루가 끝나면, 당신이 대표하고자하는 것에 관한 것입니다. 이러한 시스템 중심의 DFT 정의를 고려하는 데는 여러 가지 이유가 있습니다.

그러나 순수하게 수학적 관점에서 변환을 살펴보면 분석과 합성 변환 모두 로 스케일링 하여이 변환을 직교단일 로 만들 수 있기 때문에 둘 중 어느 것도 가장 의미가 없습니다.1(N)


좋은 답변, 감사합니다! 포괄 성을 위해 user5108_Dan의 답변을 선택했지만 귀하의 답변이 최고의 직관을 제공하는 데 분명히 도움이되었습니다.
bryhoyt

7

실제로 스케일 팩터를 설정하는 3 가지 방법은 다양하고 다른 FFT / IFFT 구현에서 일반적입니다. 1.0 순방향 및 1.0 / N 백, 1.0 / N 순방향 및 1.0 백, 1.0 / sqrt (N).

이 3 개의 스케일링 변형은 모두 트위들 팩터에 대한 일반적인 비 스케일 된 sin () 및 cos () 삼각 함수를 사용하여 IFFT (FFT (x)) 왕복 여행을 ID 변환으로 허용합니다.

순방향 FFT에서 정현파 크기를 유지한다고해서 파서 발 정리와 같이 전체 에너지가 보존되지는 않습니다. 선호하는 것을 고르세요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.