БПФ для определенного частотного диапазона.


11

Я хотел бы преобразовать сигнал в частотную область. Желаемый диапазон частот , 0.1 Hzчтобы 1 Hzи разрешение по частоте 0.01 Hz.

При частоте дискретизации 30 HzFFT дает частотные составляющие до 15 Гц. Повышение частоты дискретизации дает лучшее разрешение по частоте. Однако БПФ дает более широкий частотный диапазон. В моем случае, я просто хочу, 0.1 Hzчтобы 1 HzFFT отказался от 15 Hz(дополнительных вычислений).

Мой вопрос заключается в том, существует ли в любом случае стандартный способ вычисления частотной области сигнала с определенным частотным диапазоном и высоким разрешением?


2
звуки , как вы хотите , чтобы Увеличить FFT arc.id.au/ZoomFFT.html
эндолиты

Если вы просто выполните стандартное ДПФ с частотой дискретизации 2 Гц и длительностью 100 с, вы получите полосу частот от 0 до 1 Гц с разрешением 0,01 Гц. Только 10% ваших сэмплов будут выходить за пределы интересующей вас полосы. Стоит ли действительно усилий по разработке деталей «нестандартного» алгоритма для повышения эффективности этого сравнительно небольшого расчета?
Фотон

Ограничение заключается в том, что продолжительность должна быть как можно короче. 100-е это слишком долго. Нам нужно около 10 с
NcJie

Ответы:


5

Я думаю, что лучшее решение вашей проблемы - использовать chirp-DFT. Это как увеличительное стекло для определенного частотного диапазона. Это более эффективно, чем прямая реализация DFT (без FFT), потому что алгоритм FFT может использоваться с некоторой соответствующей предварительной и последующей обработкой. В основном вам необходимо модулировать ваш сигнал с помощью ЛЧМ-сигнала, затем фильтровать с помощью БПФ, а затем снова ЛЧМ-модулировать ваш сигнал, чтобы получить желаемую частотную характеристику. Смотрите здесь и здесь для получения подробной информации о том, как реализовать chirp-DFT.


2

Существует также возможность использования частотного деформирования (также работайте как увеличительное стекло, так как вы получаете улучшенное разрешение в интересующем диапазоне частот для БПФ того же размера за счет более низкого разрешения на более высоких частотах). Однако вы не сохраняете MIPS, поскольку размер FFT не уменьшается, а искажение частоты далеко не дешево.

Если вы хотите вычислить только определенные элементы в FFT (и, следовательно, сохранить MIPS), есть несколько способов сделать это. Например скользящий ДПФ. Ссылки в этой статье дают очень хорошее объяснение http://www.comm.utoronto.ca/~dimitris/ece431/slidingdft.pdf . Я также думаю, что goertzel algo делает нечто подобное, но я этого не знаю.

Тогда есть опция понижающей дискретизации перед FFT'ом. Это, вероятно, также сэкономит немного MIPS.

Изменить: просто чтобы уточнить комментарий о бесполезности алгоритма Гертцеля. При непосредственном подключении значений к выражению, найденному в нижней части этой вики-страницы http://en.wikipedia.org/wiki/Goertzel_algorithm, подход Гертцеля будет более сложным, чем БПФ, когда размер требуемого БПФ больше 128 (при условии, что размер FFT является фактором 2, а реализация radix-2).

Однако есть и другие факторы, которые следует принять во внимание, что идет в пользу Гёртцеля. Просто процитирую вики-страницу: «Реализации FFT и платформы обработки оказывают существенное влияние на относительную производительность. Некоторые реализации FFT [9] выполняют внутренние вычисления комплексных чисел для генерации коэффициентов на лету, значительно увеличивая их» стоимость K на единицу. единица работы. "Алгоритмы FFT и DFT могут использовать таблицы предварительно вычисленных значений коэффициентов для лучшей числовой эффективности, но это требует большего доступа к значениям коэффициентов, буферизованным во внешней памяти, что может привести к увеличению конкуренции за кэш, что противостоит некоторым из численных преимуществ «.

«Оба алгоритма получают эффективность примерно в 2 раза при использовании реальных, а не комплексных входных данных. Однако эти усиления естественны для алгоритма Гёртцеля, но не будут достигнуты для БПФ без использования определенных вариантов алгоритма, предназначенных для преобразования реального оцененные данные. "


1
Скользящее ДПФ действительно полезно в контексте анализа спектра в реальном времени, когда входная последовательность очень длинная и спектр необходимо пересчитывать через регулярные интервалы. Алгоритм Гертцеля очень эффективен, если нужно вычислить только несколько значений DFT. Это не было бы полезно для решения данной проблемы, потому что желаемое количество частотных точек слишком велико.
Мэтт Л.

Спасибо @MattL. за указание на слабость алгоритма Гёртцела.
NcJie

1

Разрешение по частоте равно где - частота выборки, а - размер БПФ. Таким образом, увеличение частоты дискретизации фактически увеличивает разрешение по частоте (я полагаю, под словом «лучше» вы подразумеваете меньшее). Поэтому вы должны увеличить размер FFT , то есть количество выборок, которые обрабатываются FFT в одном блоке данных, чтобы уменьшить разрешение по частоте. В вашем примере вам потребуется не менее 300 сэмплов для достижения желаемого частотного разрешения.

Δf=fsN
fsNN

Если не может быть увеличено из-за сложности вычислений, сигнал с ограниченной полосой частот может быть сдвинут по частоте до FFT. Пусть - непрерывный сигнал, его центральная частота, а его ширина полосы. является выборочной версией , а именно . Тогда сдвиг частоты может быть достигнут с помощью где . Частота дискретизации теперь может быть уменьшена, поскольку сигнал имеет частоту среза в отличие от частоты срезаNs(t)fcfbx(n)s(t)x(n)=s(n/fs)

x~(n)=x(n)ej2πk0/N
k0=fc/fsfb˜ f s f b ˜ x ( n ) M = f s / f b Nfb+fc который был до сдвига частоты. Согласно теореме выборки новая частота выборки должна быть больше или равна и, таким образом, может быть понижена с коэффициентом таким образом, увеличивая разрешение по частоте, сохраняя постоянным.f~sfbx~(n)M=fs/fbN

Этот метод работает, только если строго ограничен. Если это не так, полосовая фильтрация для фильтрации желаемой полосы частот должна применяться заранее. Также отметим, что понижающая дискретизация на дробное число также привнесет дополнительную вычислительную сложность.Мs(t)M

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.