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

voloda

Свой
  • Постов

    98
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о voloda

  • Звание
    Частый гость
    Частый гость
  • День рождения 27.03.1987

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 725 просмотров профиля
  1. Спасибо! Ушел осмыслять. Как раз такие задачи мы можем решать. :rolleyes: Если приведете какие-нибудь еще примеры, где есть сложные ограничения на коэффициенты - буду рад порешать.
  2. Если не секрет - почему? Если привести и числитель и знаменатель к одному формату - разрядность аккумулятора можно будет понизить, вроде бы. Увы, очень может быть. До Ваших ответов вообще не знал многое про возможности БИХ-фильтров. :laughing: Вопрос - насколько сильно меняется положение минимума после квантования? Остается ли он после этого глобальным? Был "узкий" глобальный минимум, его нашли до квантования. После кв-ия он сместился так, что перестал быть глобальным, или вообще перестал быть минимумом. Оптимизировать - что бы уменьшить ресурсы, необходимые для реализации фильтра в железе.
  3. Это как? К-ты фильтра с плавающей точкой могут отличаться на порядки. Под каждый коэффициент свой формат, что ли? Собственно, я об том же. Весь метод - это и есть оптимизирование. Весь вопрос, есть ли какие-то преимущества по сравнению с другими, известными оптимизационными методами.
  4. Up. Уважаемые форумчане! Если есть известные способы рассчета фильтров с коэффициентами меньше 8-ми бит, подскажите, пожалуйста! :1111493779:
  5. Получилось рассчитывать фильтры с коэффициентами менее 8-ми разрядов. В качестве примера - 4-х и 7-ми разрядные коэффициенты с ГВЗ, близкой к константе в полосе пропускания. 7-ми разрядные коэффициенты: clear all; close all; m=10; n=6; mat0 = zeros(m,n); mat0= [ 0.96875 0.71875 0.46875 1 -0.84375 0.375 -0.375 -0.28125 -0.3125 1 -0.03125 0.28125 0.28125 -0.625 -0.96875 1 -0.15625 0 0.28125 -0.875 -0.875 1 -0.09375 0 -0.125 0.5625 0.6875 1 -0.09375 0.46875 0.21875 0 -1 1 -0.4375 0.03125 -0.09375 0.21875 -0.40625 1 -0.4375 0 0.4375 -0.6875 -0.9375 1 0.125 0.15625 -0.09375 0.15625 -0.25 1 -0.40625 0 0.34375 -0.6875 -0.96875 1 0.125 0.625 ]; ff = 0:0.0005:0.5; f=ones(1000,1); g=zeros(1000,1); r=zeros(m,2); radius=zeros(m,1); figure(11); plot(exp(j*2*pi/100*(0:99))); hold on; grid on; for i=m:-1:1 f=f.*freqz(mat0(i,1:3),mat0(i,4:6),1000); g=g+grpdelay(mat0(i,1:3),mat0(i,4:6),1000); plot(roots(mat0(i,4:6)+0.00000000001*1j),'rx'); end; figure(22); plot(20*log10(abs(f))); grid on; axis([0 1000 -40 2]) figure(33); plot(g); grid on; 4-рех разрядные коэффициенты: clear all; close all; m=10; n=6; mat0 = zeros(m,n); mat0= [0.75 0.75 0.5 1 -0.75 0.25 -0.25 -0.75 0 1 0 0.5 0.5 -0.5 -0.75 1 -0.25 0 0.25 -0.75 -1 1 0 0 0 0.5 0.5 1 0 0.25 0 0 -1 1 -0.5 0 0 0.25 -0.5 1 -0.25 0 0 -0.5 -1 1 0 0 0 0 -0.25 1 -0.25 0 0 0.5 0.75 1 0 0.5 ]; ff = 0:0.0005:0.5; f=ones(1000,1); g=zeros(1000,1); r=zeros(m,2); radius=zeros(m,1); figure(11); plot(exp(j*2*pi/100*(0:99))); hold on; grid on; for i=m:-1:1 f=f.*freqz(mat0(i,1:3),mat0(i,4:6),1000); g=g+grpdelay(mat0(i,1:3),mat0(i,4:6),1000); plot(roots(mat0(i,4:6)+0.00000000001*1j),'rx'); end; figure(22); plot(20*log10(abs(f))); grid on; axis([0 1000 -40 2]) figure(33); plot(g); grid on; Прошу критики. :rolleyes:
  6. Теперь фильтр thermit - а действительно лучше. И я считал, что синтез одновременно по АЧХ + ФЧХ + квантование должен быть лучше. Пока так не вышло. Буду думать, почему так.
  7. А стабильность фильтр случайно не потеряет? Не могли бы Вы привести корректно посчитанные коэффициенты, для полноты картины? Есть подозрение, что сразу в фиксированной точке можно рассчитывать легче и точнее, чем в плавающей.
  8. Большое спасибо за отклик. Выполнил скрипт. Вектор а2 7-ой коэффициент 107,1364, 8-ой -100,5486. Это можно представить в инт16? И вообще, м.б. вместо a2=round(a2*32768)/32768 надо как-то типа a2=int16(round(a2*32768))/32768 ? А то они целые, но по модулю не ограниченные (более 32768) могут выйти..
  9. Коэффициенты изначально рассчитываются в целых числах заданной разрядности. Поэтому - нет, не проще. Симулинк нагляден. Даже в Матлабе такого не создать. ИМХО, конечно. В какой среде вы хотели бы получить модель? Да. В качестве образца в модели считается фаза по формуле pi=F*2.899 . F- частота входного сигнала, pi - фаза Можно и гвз, Вы правы. Фазовые характеристики проще сравнивать, например, с искажениями, вносимыми АЦП. Одно и то же отклонение гвз от константы на разных частотах вызывает разные отклонения фазы от линейной. Поэтому выложил фазу. Теория. Новый метод проектирования цифровых БИХ фильтров позволяет: 1) Рассчитывать БИХ-фильтры с линейной (с точностью до 1-2х градусов) ФЧХ в полосе пропускания; 2) Рассчитывать коэффициенты фильтров изначально в целочисленной арифметике (а не в числах с плавающей точкой с последующим округлением). 3) Проверять устойчивость на всех этапах проектирования. А не только после завершения расчетов. Наиболее распространенным методом проектирования БИХ – фильтров на сегоднешний день является метод билинейного преобразования. В процессе расчета фильтров этим методом, АЧХ фильтра аппроксимируется с использованием специальных функций. Существуют аппроксимации по Баттерворту, по Чебышеву, и эллиптическая аппроксимация. Данный метод позволяет управлять только АЧХ проектируемого фильтра, в то время как ФЧХ фильтра при таком подходе не может быть задана. ФЧХ фильтра, спроектированного билинейным методом, существенно (до сотен градусов) отличается от линейной. Между тем, такая сильная нелинейность БИХ фильтра обусловлена только методом его проектирования, и при использовании метода, предлагаемого далее, этот недостаток может быть устранен. Другим существенным недостатком метода билинейного преобразования является то, что расчёт коэффициентов фильтра осуществляется в числах с плавающей точкой, и, при реализации фильтра в арифметике с фиксированной точкой, происходит округление вещественных коэффициентов до ближайшего числа с фиксированной точкой. Билинейный способ не позволяет учитывать эффекты квантования перед расчётом фильтров. В результате округления меняются АЧХ и ФЧХ спроектированного фильтра. Кроме того, фильтр может стать неустойчивым. Неизвестно так же, являются ли полученные округленные коэффициенты оптимальными, или же в арифметике с фиксированной точкой можно найти какой-то другой, более подходящий набор коэффициентов, позволяющий реализовать лучший фильтр. Отметим так же, что это недостатки именно метода билинейного расчета фильтров, а не самих БИХ-фильтров. Разработанный метод позволяет рассчитывать БИХ фильтр по заданной АЧХ при линейной ФЧХ в целочисленных коэффициентах заданной разрядности. При этом существует возможность изменять приоритет требований. Так, можно рассчитать фильтр в целочисленных коэффициентах без учета требования линейности ФЧХ, можно жестко выдерживать требование линейности ФЧХ, платя за это незначительными ухудшениями АЧХ. Можно задавать так же одинаковый приоритет обоих требований, при которых получается «средний» по амплитуде и по фазе фильтр, или указать произвольное дробное соотношение приоритетов. В процессе расчета проверяется устойчивость фильтра на каждом этапе. Да, ФЧХ все равно получается нелинейной. Однако, ее получается сделать незначительно (несколько градусов) отличающейся от линейной. Автор метода не я, автор – В. Н. Бугров. Его основная статья: http://www.unn.ru/pages/issues/vestnik/999...6%281%29/10.pdf Картинки с гвз там тоже есть. Другие статьи: http://www.unn.ru/pages/issues/vestnik/999...st_2012_3/8.pdf http://www.unn.ru/pages/issues/vestnik/999...t_2009_2/11.pdf Любые вопросы пишите сюда или напрямую автору. Контактные данные автора указаны в статьях по ссылкам выше.
  10. Всем спасибо, все ответы учту. Отдельное спасибо brig01. Пока из статьи не понял: 1) в каком виде коэффициенты (с плавающей или фиксированной точкой), 2) нелинейность ФЧХ, 3) было ли реализовано на практике. Характеристики похожи, с методом буду разбираться. На первый взгляд - нет, не то. litv, тоже спасибо. Книжку попробую найти. Модель фильтра 8-го порядка в Simulink 210b. Fs= 2КHz, Fpass 0,5 KHz, Fstop 0,6 KHz, Apass < 1 дБ, Astop 45 дБ. Все коэффициенты – в int16. Нелинейность фазы в полосе пропускания - не более 10 градусов. Есть подозрение, что эта погрешность моделирования, а не самого фильтра, и на практике нелинейность около 4-х градусов. Если как-то еще можно спроектировать такой же фильтр - сообщите, пожалуйста. Матлабом мне сделать такого не удалось. Проектные АЧХ и ФЧХ в архиве. Коэффициенты фильтра (коэффициент log2(a0) - количество разрядов, на которые сдвигаем вправо на выходе звена, см. модель): b0 b2 b1 -a2 -a1 log2(a0) 1) 17507, -370, 5978, -4465, 3529, 14, 2) -1542, -2583, 1839, -10193, 13696, 14, 3) 3454, -13659, 5547, -5194, 11240, 13, 4) -12695, -11476, -10796, 4389, -3111, 14, 5) 3371, 5886, -7776, -4941, 3281, 13, 6) 1570, -15956, -6017, 2497, 6726, 14, 7) -2582, -9863, -5677, 7738, 835, 14, 8) 788, -16072, -10502, -14014, -134, 14 Bugrov_filter_8_zv.rar
  11. Добрый день, уважаемые участники форума! Найден способ проектирования БИХ-фильтров с линейной фазой. Подробности опишу чуть пойзже на этом же форуме. А сейчас вопрос по внедрению: в каких областях нужны такие фильтры? Как их продвигать? Любые мысли, предложения. Буду особо признателен, если назовете имена компаний, готовых купить разработку. Спасибо!
  12. Здравствуйте, des00. Где и из-за чего у Вас возникают интермодуляционные искажения? Делали систему, корректирующею амплитудно-амплитудные и амплитудно-фазовые искажения, возникающие в приемнике под воздействием мощной внеполосной помехи. Коррекцию производили на основании оценки мощности помехи, зная изменения АЧХ и ФЧХ усилителя в нелинейном режиме. Как бы предискажатель, но расположенный не в передатчике, а в приемнике, сразу после усилителя. Более подробно - выслаю в личку. Уровень фазового шума, возникающего при такой коррекции специально не оценивали, но для QAM-16 система работала.
  13. Итак, сам себе отвечу. После моделирования понял, что: 1) да 2) Mag. (dB) = 20lg[H(f)/H(0)] . Где в справке читать - так и не нашел. 3) 4) - не проверял, ибо сейчас не надо.
  14. Добрый день! 1) При рассчете IIR в fdatool Matlab в поле "Magnitude Specifications" выбираю "squared". На графике "Filter specifications" по оси Y появляется |H(f)^2|. Правильно ли я понимаю, что H(f) - это амплитуда сигнала, и график отражает изменение мощности? 2) Меняю поле "Magnitude Specifications" на "db", подпись оси Y меняется на Mag. (dB). Вроде как Mag. получена переводом в децибелы H(f). Вопрос - по какой формуле этот перевод произведен: Mag. (dB) = 20lg[H(f)/H(0)] (т.е. как децибелы "по напряжению") или же Mag. (dB)=10lg[H(f)/H(0)] (т.е. как децибелы "по мощности") ? Где это в справке можно прочитать? 3) При рассчете FIR в поле "Magnitude Specifications" вместо "squared" можно выбрать только "liner", и на графике отражается H(f), т.е. амплитуда. Почему при разных типах фильтра на графике откладываются разные величины? 4) Как в случае FIR фильтра связаны Mag. (dB) и H(f)? Понимаю, вопросы простые, но с ходу четких ответов не нашел :laughing:
  15. Если еще актуально - так можно сделать, но не в реальном времени. Стивен Смит "Цифровая обработка сигналов" пункт 19.4 "ФЧХ рекурсивных фильтров". Фильтр с нулевой фазой. Коротко идея: прогоняем данные дважды через один и тот же фильтр, второй раз - отсчеты на вход фильта подаем в обратном порядке.
×
×
  • Создать...