[an error occurred while processing this directive]
В Вашем случае я бы отказался от БПФ вообще, а сделал бы так, как опишу здесь. (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено homekvn 18 ноября 2006 г. 12:58
В ответ на: А задача такая. отправлено <font color=gray>TheMatrix</font> 18 ноября 2006 г. 09:38

1) В начале замечу, что для детектирования частот 1 Гц и 10 Гц требуется разное время. Для 10 Гц нужно 0.1 сек, для 1 Гц - 1 сек. Меньше - никак нельзя (при условии отсутствия особой априорной информации, на основе которой можно было бы осуществить нелинейную фильтрацию за более короткое время; но у Вас такой информации, похоже, нет).

2) В цифровой обработке сигналов существует такой прием как частотно временное представление сигнала путем специального преобразования. Самым общим случаем является Вейвлет. Частным случаем его является банк фильтров. Вот о нем и поговорим подробнее.

3) Есть еще такой хитрый прием, как применение warped-БПФ (оно же БПФ, взятое с выходов Лаггеровского фильтра). Тоже простой и красивый прием, но менее эффективен по вычислительным затратам, нежели Банк фильтров. Warped-БПФ позволяет выполнить БПФ, положим, на 40 отсчетов, но эти отсчеты в частотной области будут распределены не равномерно, как в случае с обычным БПФ, а по закону, напоминающему логарифмический (в реальности этот закон описывается несколько иной функцией, но большой проблемы это не вызывает на практике). Таким образом, можно получить разрешение в районе 2-4 Гц с точностью до 0.1 Гц, а в диапазоне 50..100 Гц с точностью до 5 Гц (но это так - прикидка).

Теперь о банке фильтров подробнее. Пусть входной сигнал s(n) поступает на вход нашей измерительной системы на частоте Fs. Задача - построить детектор наличия гармоники в диапазоне Fmin..Fmax. Пусть Fmax меньше Fs/2 в k раз, где k - некоторое целое число. В принципе можно, чтобы k было равно единице. Это нужно будет только для того, чтобы сократить объем вычислений. В начале мы так и будем считать, что k=1. Если бы Вы не стали делать тайну из частоты дискретизации, я бы написал конкретнее ;-)

Идея банка фильтров такая:
а) берем входной сигнал, поступающий к нам на частоте Fs и делаем две ветви: одна окажется сверху, другая - снизу. В верхнюю ветвь поставим фильтр высоких частот в диапазоне Fs/4..Fs/2. Затем выполним понижение частоты дискретизации в два раза. После этого ставим некий амплитудный детектор, цель которого определение либо пика энергии, либо среднего уровня энергии за некоторый вам известный интервал времени. Эта верхняя ветвь есть детектор того, присутствуют ли во входном сигнале частоты в диапазоне Fs/4..Fs/2.

б) Теперь рассмотрим нижнюю ветвь. В нее мы поставим фильтр нижних частот, фильтрующий диапазон 0..Fs/4. Частоту дискретизации сигнала с выхода этого фильтра понизим вдвое. Обозначим частоту дискретизации этого сигнала как F1s.

в) Теперь повторим пункты а) и б) применительно к полученному сигналу, заменяя Fs на новую частоту дискретизации.

В результате рекурсивного приема, получим множество ветвей с детекторами в них. Самая первая ветвь, как уже отмечалось будет говорить о наличии сигнала в диапазоне Fs/4...Fs/2. Отвод во второй ветви, которая будет располагаться ниже, будет детектироваться наличие сигнала в диапазоне Fs/8..Fs/4. Отвод следующей ветки есть детектор сигнала в диапазоне Fs/16..Fs/8. Потом будет диапазон Fs/32..Fs/16 и т.д. Остановку сделаете тогда, когда сочтете нужным.

Особенностью такой структуры будет то, что частоты будут обнаруживаться настолько рано, насколько это только возможно. Чем выше частотный диапазон, тем меньшая задержка потребуется для обнаружения сигнала в нем. И наоборот, чем ниже частотный диапазон, тем большее время потребуется для его детектирования. В общем случае можно сказать еще правильнее. Чем уже интересуемый диапазон, тем большее время понадобится для его распознания.

Если интересно будет узнать про Warped-FFT, то могу поделиться и материалами по этому поводу. Только сейчас уже нету больше сил писать. Воскресенье все же.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание