реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> перестраиваемый полосно-заграждающий фильтр.
_sv_
сообщение Sep 21 2014, 07:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



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

Сразу: железо реализовано на дохлом 32х разрядном арм.
Поэтому ищу алгоритмы с целочисленной арифметикой.
Спектр сигнала мне уже известен (в программе уже реализован анализатор спектра).

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

Проблемы:
1) Что-то не нахожу реализаций полосно-заграждающих фильтров.
Неужели надо лепить ФНЧ+ФВЧ?

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

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

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

Сообщение отредактировал _sv_ - Sep 21 2014, 07:28
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Sep 21 2014, 08:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



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

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

Сообщение отредактировал Genadi Zawidowski - Sep 21 2014, 08:08
Go to the top of the page
 
+Quote Post
_sv_
сообщение Sep 21 2014, 12:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



Цитата(Genadi Zawidowski @ Sep 21 2014, 10:03) *
а почему не применяете старый как мир способ - сдвиг спектра?
ответ на этот вопрос очевиден... я, к своему стыду, впервые слышу об этом методе.
благодарен вам за ликбез.
только пока не совсем понимаю каким образом реализовать сам сдвиг. ресамплингом?

Цитата(Genadi Zawidowski @ Sep 21 2014, 10:03) *
В этом классическом источнике для всех вариантов есть расчёт.
пока бродил по просторам интернета, нашел вот такую ссылку:
A Collection of Useful C++ Classes for Digital Signal Processing
Ссылка: Коллекция
Загрузить весь архив сюда на форум не получается. Он чуток больше, чем 25мег.
Много полезного выкусил из архива. Оставил только эти "полезные классы".

Сообщение отредактировал _sv_ - Sep 21 2014, 12:18
Прикрепленные файлы
Прикрепленный файл  DSPFiltersComplete.zip ( 1.62 мегабайт ) Кол-во скачиваний: 22
 
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Sep 21 2014, 13:59
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



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

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

А так - первое попавшееся
http://www.cyberforum.ru/digital-signal-pr...read864711.html

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


Сообщение отредактировал Genadi Zawidowski - Sep 21 2014, 14:00
Go to the top of the page
 
+Quote Post
анатолий
сообщение Sep 23 2014, 09:28
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052



Перестраиваемый режекторный фильтр описан здесь:
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 град. сигнал полностью подавляется.
Go to the top of the page
 
+Quote Post
Skryppy
сообщение Sep 23 2014, 14:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 14-02-11
Пользователь №: 62 975



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

Сообщение отредактировал Skryppy - Sep 23 2014, 14:12
Go to the top of the page
 
+Quote Post
_sv_
сообщение Sep 24 2014, 08:22
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



Цитата(Skryppy @ Sep 23 2014, 16:00) *
Можете заранее расчитать коэффиценты заграждающих фильтров
Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное.

Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную?
Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается.
Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю.
Но перевод в фиксированную точку пока не удался.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 24 2014, 09:11
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_sv_ @ Sep 24 2014, 15:22) *
Но перевод в фиксированную точку пока не удался.

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


--------------------
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 24 2014, 13:14
Сообщение #9


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(_sv_ @ Sep 24 2014, 11:22) *
Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное.

Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную?
Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается.
Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю.
Но перевод в фиксированную точку пока не удался.

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
_sv_
сообщение Sep 30 2014, 18:43
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



Цитата(Genadi Zawidowski @ Sep 21 2014, 15:59) *
Это если есть машина времени... или поищите в яндексе или гугле или на данном форуме по ключевым словам

Добрый вечер еще раз.
Обойтись без фильтрации не получилось.
Приходится возвращаться к затронутой теме.

Нашел вот такой ресурс:
http://www.micromodeler.com/dsp/
В принципе - делает почти все, что мне надо.

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

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

Спасибо.
Go to the top of the page
 
+Quote Post
Skryppy
сообщение Oct 1 2014, 09:35
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 14-02-11
Пользователь №: 62 975



Погуглите файл :Intro to System Generator Part 2
Ссылка:
http://webcache.googleusercontent.com/sear...mp;client=opera

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

Сообщение отредактировал Skryppy - Oct 1 2014, 09:37
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 18:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016