Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить

Как сжать полосу?

Чт апр 04, 2024 16:01:35

Прошу подсказать, как грамотно решить следующую практическую задачу.

От датчика в компьютер приходит сигнал с частотой дискретизации 125 КГц. Для целей анализа именно такая частота и нужна, все в порядке.

Но еще я строю спектр. На спектре я хочу видеть полосу приблизительно до 1000 Гц. Чтобы этого добиться (сжать полосу), я сначала суммировал по N точек и подавал эти значения на вход БПФ. Получилось плохо, т.к. амплитуды гармонических составляющих падали, тонули в шуме.

Поэтому я стал выдергивать каждую N-ю точку. Все работает хорошо, частоты на спектре видны, но... Я ведь отбрасываю 99% полезной информации!

Наверное, можно делать как-то по-другому?

Re: Как сжать полосу?

Чт апр 04, 2024 17:05:05

с частотой дискретизации 125 КГц. ....хочу видеть полосу приблизительно до 1000 Гц.

Вы видимо плохо понимаете математику Фурье преобразования.
Не важно как вы делаете дискретный Фурье - БПФ или ДПФ. Общий расчет идентичен.
1. Частота дискретизации НИКАК не влияет на полосу бинов (фильтров). Частота дискретизации лишь определяет зоны Найквиста. И если вы работаете в первой зоне, то входной аппаратный антиалиасинговый фильтр (ФНЧ) должен иметь частоту среза чуть выше верхней частоты спектра обрабатываемого сигнала и заданное подавление на частоте равной половине частоты дискретизации.
И это все. Остальное определяется по другому.
2. Полоса пропускания отдельного бина (фильтра) Фурье определяется ВРЕМЕНЕМ НАКОПЛЕНИЯ МАССИВА и оконной функцией. Для прямоугольной оконной функции первый ноль АЧХ (полоса главного лепестка АЧХ) будет равна величине обратной времени накопления. То есть, если вы желаете иметь полосу 1 кГц, вам нужно будет копить сигнал 1 мс. Если 100 Гц, то 10 мс. Если 10 Гц - 100 мс.
Сиречь количество элементов массива определится отношением частоты дискретизации к полосе бина.
Если оконная функция иная, тогда нужно учитывать растекание спектра при подавлении боковых лепестков АЧХ. То есть, полоса будет тем шире, чем меньше уровень боковых лепестков.
Исходя из выше сказанного, вам следует озвучить потребную ширину спектра сигнала подлежащего преобразованию Фурье и потребную полосу одного фильтра. Ну или количество фильтров.

Re: Как сжать полосу?

Пт апр 05, 2024 12:50:08

Поэтому я стал выдергивать каждую N-ю точку. Все работает хорошо, частоты на спектре видны, но... Я ведь отбрасываю 99% полезной информации!

А через ФНЧ со срезом 1000 Гц прогнать можете ? Пу сути вам эти 99% и не нужны же для анализа НЧ составляющих.

Re: Как сжать полосу?

Пт апр 05, 2024 14:31:19

вам эти 99% и не нужны

Именно об этом был и мой спич.
Если автор темы желает получить спектр от нуля до 1 кГц, то даже если автор перфекционист, частота дискретизации 8 кГц более чем достаточна. Но объем вычислений определится полосой бинов/количеством фильтров.
Скажем, при полосе бина 10 Гц получится массив 800 отсчетов (400 фильтров) Из них 100 будут обеспечены антиалиасингом.
Ну и не факт, что в приведенном мной случае БПФ окажется производительнее ДПФ. Все зависит от кода.
У меня на dsPIC33 и "бабочки" БПФ написанной на АСМе с предельной оптимизацией под DSP ядро точка равенства скорости для ДПФ vs БПФ лежит при количестве требуемых фильтров 30% от общего количества при БПФ.
Ответить