Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Есть ли простой способ взять БПФ с нелинейным шагом по бинам?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
tmtlib
Если брать ДПФ, то всё просто - меняю частоту опорной синусоиды с необходимым шагом и перемножаю на сигнал. Работает медленно.
Чисто гипотетический пример: для низких частот шаг 1Гц, средних - 50Гц, для высоких - 100Гц.

Можно немного ускорить и взять БПФ с разрешением 1Гц вместо ДПФ, а лишние данные выкинуть. Но для высоких частот выкидывать по 99 бинов как-то расточительно. Да и тоже не особо быстро работает, точек-то много.

По сути я в поисках подобного подхода:

Есть исходные данные, пусть это 16384 отсчётов. Далее идёт нечто вроде БПФ, но для низких частот оно использует все 16384, потом где-то доходит до 8192, 4096 на средних и только для высоких, к примеру только 512,64. Соответственно в НЧ диапазоне алгоритм пыхтит, так как перемножений много, а на высоких - летает.

В принципе я представляю себе следующую картину:
пусть мы преобразование фурье в 16384 отсчёта представим в виде схемы с перемножением бабочек. Затем на спектре выделим ненужные бины и по ходу перемножения бабочек в обратную сторону занулим "деревья" перемножений, которые не будут видны в финальном спектре.

Может кто что знает, как такое называется?



GetSmart
Какого рода сигналы будут анализироваться?
Если простые звуковые сигналы, то в больших блоках ВЧ сигналы могут быть т.с. "необъективными".
tmtlib
Для высокочастотной области мне достаточно фурье по 256 точек. А вот для низких хотелось бы получить 16384. Т.е. мне хотелось бы взять такое преобразование, которое давало бы для ВЧ высокое временное разрешение и низкое частотное, а для НЧ - низкое временное разрешение и высокое частотное. Спектр при этом должен обновляться не весь сразу: быстро в ВЧ области и медленно в НЧ. Например, 1000-ный отсчёт спектра 100 раз в секунду, 1-ый - 1 раз в 100 секунд. Если спектр развернуть по времени, должен получиться равнобедренный треугольник с основанием вверху. Треугольник заполнен амплитудами. По-моему такое много где может применяться, видел где-то советовали "Q TRANSFORM", но по-моему не совсем то.
GetSmart
Тогда берите блоки сэмплов разной длины для разных частот (ВЧ/СЧ/НЧ). Потому как брать один длинный блок (хоть 16384) и искать в нём ВЧ, дело неблагодарное, если искать там звуки речи, музыки и многие другие.
petrov
Нету быстрого преобразования с не равноотстоящими частотами.
Посмотрите каскадное соединение QMF банков фильтров, например в книге Multirate Systems and Filter Banks - Vaidyanathan.
Самурай
Цитата(tmtlib @ Oct 26 2011, 08:35) *
Может кто что знает, как такое называется?


Еще как вариант можно посмотреть Warped FFT
ivan219
Герцель по сравнению с ДПФ в 2 раза выгоднее.
И расчёт можно вести по одному периоду с достаточно большим разрешением на НЧ. Но разрешение по частоте будет экспоненциальное с ростом частоты разрешение падает.
Alexey Lukin
Разбейте сигнал на частотные полосы с помощью кроссовера, а затем к каждой полосе примените БПФ нужного размера. Для экономии вычислений полосовые сигналы с кроссовера можно прореживать.

Всё зависит от вашей задачи. Если нужно критическое сэмплирование, то вместо кроссовера используйте вейвлет-преобразование, а вместо БПФ — МДКТ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.