Перейти к содержанию
    

перестраиваемый полосно-заграждающий фильтр.

Добрый день всем.

 

Сразу: железо реализовано на дохлом 32х разрядном арм.

Поэтому ищу алгоритмы с целочисленной арифметикой.

Спектр сигнала мне уже известен (в программе уже реализован анализатор спектра).

 

Моя проблема стара как мир. Возбуждение в звуковом тракте. Микрофон-Динамик.

Что хочется попробовать: перестраиваемый полосно-заграждающий фильтр.

Частоту возбуждения - знаю. Полосу подавления - тоже. Степень подавления - тоже могу высчитать.

 

Проблемы:

1) Что-то не нахожу реализаций полосно-заграждающих фильтров.

Неужели надо лепить ФНЧ+ФВЧ?

 

2) Что-то не нахожу реализаций с целочисленной арифметикой.

Неужели таковых нет?

 

3) Вообще мало реализаций перестраиваемых полосно-заградительных фильтров.

Где искать?

 

Добавил:

Данные 16 бит, 16кгц дискретизация.

Изменено пользователем _sv_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В этом классическом источнике для всех вариантов есть расчёт. Я и в целочисленном варианте (если точнее, fixed point) использовал эти алгоритмы.

Смотреть CFIRDsgnDlg::fir_dsgn в firdesign.cpp

 

зы: а почему не применяете старый как мир способ - сдвиг спектра? После нескольких путешествий по кольцу микрфон-устройство-динамик "возбуд" уходит за полосу пропускания.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а почему не применяете старый как мир способ - сдвиг спектра?
ответ на этот вопрос очевиден... я, к своему стыду, впервые слышу об этом методе.

благодарен вам за ликбез.

только пока не совсем понимаю каким образом реализовать сам сдвиг. ресамплингом?

 

В этом классическом источнике для всех вариантов есть расчёт.
пока бродил по просторам интернета, нашел вот такую ссылку:

A Collection of Useful C++ Classes for Digital Signal Processing

Ссылка: Коллекция

Загрузить весь архив сюда на форум не получается. Он чуток больше, чем 25мег.

Много полезного выкусил из архива. Оставил только эти "полезные классы".

DSPFiltersComplete.zip

Изменено пользователем _sv_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сдвиг. ресамплингом?

Это если есть машина времени...

 

А так - первое попавшееся

http://www.cyberforum.ru/digital-signal-pr...read864711.html

 

или поищите в яндексе или гугле или на данном форуме по ключевым словам

сдвиг спектра уивер

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перестраиваемый режекторный фильтр описан здесь:

Regalіa P., Mіtra S.K., Vaіdyanathan P.P. The Dіgіtal All-Pass Fіlter: A Versatіle Sіgnal Processіng Buіldіng Block // Proc. ІEEE. -1988. -V.76. -№1. - p.19 - 37.

Есть перевод в ТИИЭР.

Суть: выход фазового фильтра складывается со входом - на частоте поворота на 180 град. сигнал полностью подавляется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете заранее расчитать коэффиценты заграждающих фильтров в FDATools пакета MATLAB,там,кстати можете экспортировать фильтр в C header. "С Coder" матлаба также позволит вам реализовать различные фильтры, причем вы сами настраиваете арифметику-с плавающей или фиксированной точкой. А про перестраиваемые фильтры обсуждение было в соседней теме "Цифровой узкополосный фильтр с динамически изменяемой центральной частотой".

Изменено пользователем Skryppy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете заранее расчитать коэффиценты заграждающих фильтров
Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное.

 

Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную?

Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается.

Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю.

Но перевод в фиксированную точку пока не удался.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но перевод в фиксированную точку пока не удался.

round(pipa*2^N) не работает, а потом проверить на устойчивость ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное.

 

Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную?

Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается.

Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю.

Но перевод в фиксированную точку пока не удался.

в матлабе (FDATools пакета MATLAB) это делается галочкой - плавающая или фиксированная точка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это если есть машина времени... или поищите в яндексе или гугле или на данном форуме по ключевым словам

Добрый вечер еще раз.

Обойтись без фильтрации не получилось.

Приходится возвращаться к затронутой теме.

 

Нашел вот такой ресурс:

http://www.micromodeler.com/dsp/

В принципе - делает почти все, что мне надо.

 

Но есть пара вопросов:

1) Можно увидеть, что дизайнер, пересчитывая коэффициенты, подбирает их переполнение Q18, Q13 и т.д.

Совершенно не понимаю каким образом они пересчитывают переполнение.

 

2) Сдвиги... В этом же примере как-то определяют те же сдвиги влево-вправо на 13, 14, 15 (и т.д.) битов.

Как это считают?

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Погуглите файл :Intro to System Generator Part 2

Ссылка:

http://webcache.googleusercontent.com/sear...mp;client=opera

 

Там посмотрите про fixed point,сложение чисел и переполнение при сложении (overflow) и т.д.

Изменено пользователем Skryppy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...