_sv_ 0 21 сентября, 2014 Опубликовано 21 сентября, 2014 (изменено) · Жалоба Добрый день всем. Сразу: железо реализовано на дохлом 32х разрядном арм. Поэтому ищу алгоритмы с целочисленной арифметикой. Спектр сигнала мне уже известен (в программе уже реализован анализатор спектра). Моя проблема стара как мир. Возбуждение в звуковом тракте. Микрофон-Динамик. Что хочется попробовать: перестраиваемый полосно-заграждающий фильтр. Частоту возбуждения - знаю. Полосу подавления - тоже. Степень подавления - тоже могу высчитать. Проблемы: 1) Что-то не нахожу реализаций полосно-заграждающих фильтров. Неужели надо лепить ФНЧ+ФВЧ? 2) Что-то не нахожу реализаций с целочисленной арифметикой. Неужели таковых нет? 3) Вообще мало реализаций перестраиваемых полосно-заградительных фильтров. Где искать? Добавил: Данные 16 бит, 16кгц дискретизация. Изменено 21 сентября, 2014 пользователем _sv_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 21 сентября, 2014 Опубликовано 21 сентября, 2014 (изменено) · Жалоба В этом классическом источнике для всех вариантов есть расчёт. Я и в целочисленном варианте (если точнее, fixed point) использовал эти алгоритмы. Смотреть CFIRDsgnDlg::fir_dsgn в firdesign.cpp зы: а почему не применяете старый как мир способ - сдвиг спектра? После нескольких путешествий по кольцу микрфон-устройство-динамик "возбуд" уходит за полосу пропускания. Изменено 21 сентября, 2014 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sv_ 0 21 сентября, 2014 Опубликовано 21 сентября, 2014 (изменено) · Жалоба а почему не применяете старый как мир способ - сдвиг спектра?ответ на этот вопрос очевиден... я, к своему стыду, впервые слышу об этом методе. благодарен вам за ликбез. только пока не совсем понимаю каким образом реализовать сам сдвиг. ресамплингом? В этом классическом источнике для всех вариантов есть расчёт.пока бродил по просторам интернета, нашел вот такую ссылку: A Collection of Useful C++ Classes for Digital Signal Processing Ссылка: Коллекция Загрузить весь архив сюда на форум не получается. Он чуток больше, чем 25мег. Много полезного выкусил из архива. Оставил только эти "полезные классы". DSPFiltersComplete.zip Изменено 21 сентября, 2014 пользователем _sv_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 21 сентября, 2014 Опубликовано 21 сентября, 2014 (изменено) · Жалоба сдвиг. ресамплингом? Это если есть машина времени... А так - первое попавшееся http://www.cyberforum.ru/digital-signal-pr...read864711.html или поищите в яндексе или гугле или на данном форуме по ключевым словам сдвиг спектра уивер Изменено 21 сентября, 2014 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aser 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Перестраиваемый режекторный фильтр описан здесь: 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 град. сигнал полностью подавляется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 (изменено) · Жалоба Можете заранее расчитать коэффиценты заграждающих фильтров в FDATools пакета MATLAB,там,кстати можете экспортировать фильтр в C header. "С Coder" матлаба также позволит вам реализовать различные фильтры, причем вы сами настраиваете арифметику-с плавающей или фиксированной точкой. А про перестраиваемые фильтры обсуждение было в соседней теме "Цифровой узкополосный фильтр с динамически изменяемой центральной частотой". Изменено 23 сентября, 2014 пользователем Skryppy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sv_ 0 24 сентября, 2014 Опубликовано 24 сентября, 2014 · Жалоба Можете заранее расчитать коэффиценты заграждающих фильтров Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное. Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную? Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается. Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю. Но перевод в фиксированную точку пока не удался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 сентября, 2014 Опубликовано 24 сентября, 2014 · Жалоба Но перевод в фиксированную точку пока не удался. round(pipa*2^N) не работает, а потом проверить на устойчивость ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 24 сентября, 2014 Опубликовано 24 сентября, 2014 · Жалоба Да. Могу. Заранее рассчитать - не проблема. Но мне надо чуточку иное. Существует ли способ перевода коэфицинетов "плавающей точки" в фиксированную? Т.е. посчитать коэфицинеты в варианте "плавающей точки" (а1, а2, в0, в1 и в2) получается. Вроде бы получается. По крайней мере - фильтр делает то, что я ожидаю. Но перевод в фиксированную точку пока не удался. в матлабе (FDATools пакета MATLAB) это делается галочкой - плавающая или фиксированная точка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sv_ 0 30 сентября, 2014 Опубликовано 30 сентября, 2014 · Жалоба Это если есть машина времени... или поищите в яндексе или гугле или на данном форуме по ключевым словам Добрый вечер еще раз. Обойтись без фильтрации не получилось. Приходится возвращаться к затронутой теме. Нашел вот такой ресурс: http://www.micromodeler.com/dsp/ В принципе - делает почти все, что мне надо. Но есть пара вопросов: 1) Можно увидеть, что дизайнер, пересчитывая коэффициенты, подбирает их переполнение Q18, Q13 и т.д. Совершенно не понимаю каким образом они пересчитывают переполнение. 2) Сдвиги... В этом же примере как-то определяют те же сдвиги влево-вправо на 13, 14, 15 (и т.д.) битов. Как это считают? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 0 1 октября, 2014 Опубликовано 1 октября, 2014 (изменено) · Жалоба Погуглите файл :Intro to System Generator Part 2 Ссылка: http://webcache.googleusercontent.com/sear...mp;client=opera Там посмотрите про fixed point,сложение чисел и переполнение при сложении (overflow) и т.д. Изменено 1 октября, 2014 пользователем Skryppy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться