파이썬에서 2D FFT를 할 때 정규화에 관한 간단한 질문이 있습니다. 정상적인 요소는 1로 채워지는 배열로부터 결정될 수 있습니다.2D FFT의 정규화
예를 들어 1d에서 [1,1,1,1]의 FFT는 [4 + 0j, 0 + 0j, 0 + 0j, 0 + 0j]를 제공하므로 정규화 인수는 1/N = 1/4.
2D에서 [[1,1], [1,1]]의 FFT는 [[4 + 0j, 0 + 0j], [0 + 0j, 0 + 0j] 1/MN = 1/(2 * 2) = 1/4가된다.
이제 각 요소의 평균 분포가 가우스 분포 인 3000 x 3000 매트릭스가 있다고 가정합니다. 정규화 인수 = 1/(3000 * 3000)를 FFT하여 정규화하면 10^-7의 순서.
이제 우리는 반복이 1000 1000에 의해 소자 영역 부 이용 (정규화 계수 = 1 * 1000/(1000)). 우리가 얻는 평균 전력은 10^-6입니다. 나는 ~ 10의 차이가있는 이유가 궁금합니다. 평균의 힘이 같지 않아야합니까? 여분의 정규화 요소가 누락 되었습니까?
요소 차이가 실제로 9 인 경우, 요소 수 (3000 x 3000의 요소 수가 1000 x 1000보다 9 배 더 많음)에서 추측 할 수 있지만이 직관적 인 이유는 무엇입니까? 여분의 요인? 또한 "진정한"기본 평균 전력을 얻기 위해 절대 표준화 계수를 어떻게 결정합니까?
는 모든 통찰력이 크게 감사합니다. 미리 감사드립니다!
샘플 코드 :
import numpy as np
a = np.random.randn(3000,3000)
af = np.fft.fft2(a)/3000.0/3000.0
aP = np.mean(np.abs(af)**2)
b = a[1000:2000,1000:2000]
bf = np.fft.fft2(b)/1000.0/1000.0
bP = np.mean(np.abs(bf)**2)
print aP,bP
>1.11094908545e-07 1.00226264535e-06
FFT는 평균화 과정이기 때문에 양자화를 기반으로 보정해야한다고 생각합니다. 20.log (3,10) = 9.54 : 귀하의 요소가 여기에 있습니다. 기타 : http://www.lumerink.com/courses/ece697/docs/Papers/The%20Fundamentals%20of%20FFT-Based%20Signal%20Analysis%20and%20Measurements.pdf – lucasg