오늘 (Oura FFT 라이브러리를 사용하여) C++ 코드를 작성하여 Matlab과 동일한 결과를 얻으려고 애 쓰면서 마침내 문제와 해결책을 발견했습니다.Ooura 반대 FFT 차이점 Matlab ifft
진폭 - 주파수 응답의 격자 역 계수를 산출 매트랩은 (matlab에 내부 fir2() 함수의 코드 단편)는 다음과 같은 방식으로 수행된다 : 결과
%H contains 8192 points of AFR data
Hconj = [H conj(H(npt-1:-1:2))]; % Fourier transform of real series
ht = real(ifft(Hconj)); % Symmetric real series
우리는 다시 16,384 빈들 얻을 , 후반은 버려 질 수 있지만, 전반은 나중에 FIR 계수로 사용될 수 있습니다. 내가 진짜 DFT의 rdft() 함수를 사용 Ooura에서 동일한 작업을 수행하는 경우
는하지만,이 결과 AFR의 거울 효과를 만들 계수를 얻을 수는 AFR 플롯의 모든 주파수는 그래서 2
로 분할된다 아이디어가 나에게 와서 : 내 C + + 코드에서 나는 두 번 큰 (16384 점)을 만들어 미러링없이 주파수 데이터로 채웠다. 그리고 짜잔! 이제는 16384 포인트를 얻었습니다. 8192 포인트 이후에 모든 것을 버리고 결과 AFR이 Matlab과 일치합니다.
모든 표준 FFT 구현에이 미러링이 필요하다고 확신했습니다. 오우 라 (Ooura)의 단점은 입력에서 데이터를 미러링 할 필요가 없거나 다른 일이 발생했을 가능성이 있습니까?