특정 주파수 범위에 대한 FFT.


11

신호를 주파수 영역으로 변환하고 싶습니다. 원하는 주파수 범위는 0.1 Hz~ 1 Hz이고 주파수 분해능은 0.01 Hz입니다.

샘플링 속도가 30 HzFFT 인 경우 FFT는 주파수 성분에 최대 15Hz를 제공합니다. 샘플링 속도를 높이면 주파수 분해능이 향상됩니다. 그러나 FFT는 더 넓은 주파수 범위를 제공합니다. 내 경우에는, 난 그냥 원하는 0.1 Hz에가 1 Hz, FFT가 포기 15 Hz(추가 계산).

내 질문은, 특정 주파수 범위와 고해상도로 신호의 주파수 도메인을 계산할 수있는 표준 방법이 있습니까?


2
당신 같은 소리 줌 FFT 원하는 arc.id.au/ZoomFFT.html
endolith

샘플링 속도가 2Hz이고 지속 시간이 100 초인 표준 DFT를 수행하는 경우 0.01Hz 분해능으로 0에서 1Hz의 주파수 대역을 얻게됩니다. 샘플의 10 %만이 관심있는 대역 밖에있을 것입니다.이 상대적으로 작은 계산의 효율성을 향상시키기 위해 "표준이 아닌"알고리즘의 세부 정보를 계산하는 것이 정말 가치가 있습니까?
광자

제약 조건은 기간이 가능한 짧아야한다는 것입니다. 100 초가 너무 깁니다. 우리는 약 10+ s가 필요합니다
NcJie

답변:


5

문제에 대한 가장 좋은 해결책은 처프 -DFT를 사용하는 것입니다. 특정 주파수 범위의 돋보기와 같습니다. FFT 알고리즘은 적절한 사전 처리 및 사후 처리와 함께 사용될 수 있으므로 DFT를 직접 구현하는 것 (FFT 제외)보다 더 효율적입니다. 기본적으로 처프 신호로 신호를 변조 한 다음 FFT를 사용하여 필터링 한 다음 신호를 처프 변조하여 원하는 주파수 응답을 얻습니다. 처프 -DFT를 구현하는 방법에 대한 자세한 내용 은 여기여기 를 참조 하십시오 .


2

주파수 왜곡을 사용하는 가능성도 있습니다 (고주파에서 낮은 해상도를 희생하면서 동일한 크기의 FFT에 대한 관심 주파수 범위에서 향상된 해상도를 얻는다는 점에서 돋보기로도 작동합니다). 그러나 FFT 크기가 줄어들지 않고 주파수 휨이 저렴하지 않기 때문에 MIPS를 저장하지 않습니다.

FFT에서 특정 구간 만 계산하여 MIPS를 절약하려면 몇 가지 방법이 있습니다. 예를 들어 슬라이딩 DFT. 이 백서의 참고 문헌은 http://www.comm.utoronto.ca/~dimitris/ece431/slidingdft.pdf에 대한 아주 좋은 설명을 제공합니다 . 나는 또한 goertzel algo가 비슷한 것을 수행한다고 생각하지만 그것을 모른다.

그런 다음 FFT 전에 다운 샘플링 옵션이 있습니다. 아마도 일부 MIPS를 절약 할 수 있습니다.

편집 : Goertzel 알고리즘에 관한 의견을 명확히하기 위해 유용하지 않습니다. 이 위키 페이지 ( http://en.wikipedia.org/wiki/Goertzel_algorithm) 의 하단에있는 표현식에 값을 직접 연결 하면 필요한 FFT의 크기가 128보다 클 때 Goertzel 방식이 FFT보다 더 복잡합니다 (FFT 크기가 2의 요소이고 기수 -2 구현이라고 가정).

그러나 Goertzel에 유리하게 고려해야 할 다른 요소가 있습니다. "FFT 구현 및 처리 플랫폼은 상대 성능에 큰 영향을 미칩니다. 일부 FFT 구현은 내부 복소수 계산을 수행하여 계수를 즉석에서 생성하여"K 당 비용 K를 크게 증가시킵니다. " FFT 및 DFT 알고리즘은 더 나은 수치 효율성을 위해 사전 계산 된 계수 값 테이블을 사용할 수 있지만 외부 메모리에 버퍼링 된 계수 값에 더 많은 액세스가 필요하므로 일부 수치 이점에 대응하는 캐시 경합이 증가 할 수 있습니다. "

"두 알고리즘은 복소수 입력 데이터가 아닌 실제 값을 사용하는 경우 약 2 배의 효율을 얻습니다. 그러나 이러한 이득은 Goertzel 알고리즘에 고유하지만 실제 변환에 특화된 특정 알고리즘 변형을 사용하지 않으면 FFT에는 달성되지 않습니다. 소중한 데이터 "


1
슬라이딩 DFT는 입력 시퀀스가 ​​매우 길고 스펙트럼이 일정한 간격으로 재 계산되어야하는 실시간 스펙트럼 분석의 맥락에서 실제로 유용합니다. Goertzel 알고리즘은 소수의 DFT 값만 계산해야하는 경우 매우 효율적입니다. 원하는 주파수 포인트 수가 너무 많기 때문에 주어진 문제를 해결하는 데 유용하지 않습니다.
Matt L.

감사합니다 @MattL. Goertzel Algorithm 취약점을 지적했습니다.
NcJie

1

Δ에프=에프에스
에프에스

에스()에프에프엑스()에스()엑스()=에스(/에프에스)

엑스~()=엑스()이자형제이2π케이0/
케이0=에프/에프에스에프에프+에프에프~에스에프엑스~()미디엄=에프에스/에프

에스()미디엄

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