[an error occurred while processing this directive]
|
Попробую дать несколько идей.
1. Если делать узкополосный фильтр, то его можно сделать БИХ-ами (дешево и сердито, правда на фиксированной точке придется дополнительно позаботиться о том, чтобы не возникло неустойчивости, вызванной накоплением ошибки округления).
2. Можно сделать все не шестью КИХ-фильтрами, а одним КИХ фильтром, который сразу будет выделять шесть узкополосных каналов (делать такую обработку надо будет в частотной области)
3. Узкополосные фильтры делаются просто замечательно через банки фильтров. А именно (приведу пример). Пусть надо выделить диапазон от 7200 Гц до 7400 Гц на тактовой 44100 Гц. Делаем так: а) фильтруем НЧ фильтром (КИХ порядка 24-28 да еще и симметричный, да еще потом проредим) с частотой среза 11025 Гц. Далее понижаем тактовую в два раза (путем прореживания, т.е. выбирания каждого второго отсчета). б)Далее пропускаем полученный сигнал через ВЧ-фильтр с частотой среза 5512,5 Гц и опять понижаем тактовую в два раза. При этом ВЧ-фильтр будет иметь тот же порядок, что и на предыдущем шаге (24-28 симметричных семплов). Дальше продолжаем в таком же духе до тех пор, пока полоса не сузится до герц 800. в) Далее оцениваем амплитуду любым методом. Хорошо подойдет для этой цели преобразование Гильберта или иной прием, прямо или опосредованно связанный с комплексным аналитическим представлением сигнала.
Сразу скажу, что по быстродействию последний, 3-й прием, на мой взгляд, будет наиболее удачным. По совокупности память-быстродействие лучше взять прием 2.
Если будете делать каждый фильтр по отдельности и в лоб, то скорее всего будут проблемы как с памятью, так и с мипсами. Так что мой совет: подумайте над предложением 2.
E-mail: info@telesys.ru