Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IIR фильтры с линейной фазой
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
voloda
Добрый день, уважаемые участники форума!

Найден способ проектирования БИХ-фильтров с линейной фазой. Подробности опишу чуть пойзже на этом же форуме. А сейчас вопрос по внедрению: в каких областях нужны такие фильтры? Как их продвигать? Любые мысли, предложения. Буду особо признателен, если назовете имена компаний, готовых купить разработку.

Спасибо!
ViKo
Цитата(voloda @ Feb 18 2013, 14:01) *
Найден способ проектирования БИХ-фильтров с линейной фазой. Подробности опишу чуть позже на этом же форуме.

На развод похоже. Или фильтр не фильтрует...
soldat_shveyk
Не факт, что развод.
CIC-фильтр - пример БИХа с линейной ФЧХ. Формально.
Фактически, CIC - это рекурсивная реализация однородного КИХ фильтра. Фильтрует он не особо, но
нашел широкое применение в чипах DDC (например AD6620) для децимации узкополосных сигналов
благодаря нулям АЧХ на частотах Fs/N.

voloda, выложите здесь коэффициенты какого-нибудь вашего фильтра, чтобы можно было посмотреть в Matlab-е АЧХ/ФЧХ.
thermit
Все верно. Физически реализуемый БИХ общего вида принципиально не может иметь линейную фазу. Т е полюсы бих с лф должны быть сопряжены относительно единичной окружности (неустойчивый бих) или лежать на ней (частный случай - CIC).

ps

А вообще-то к-ты такого фильтра нужно привести в форуме и не провоцировать честную компанию на флуд...
V_G
Если способ действительно существует, и это не CIC и не развод, стоило бы сначала попробовать запатентовать этот способ. Если это алгоритм, найти способ его патентования. В этом случае можно будет продать за рубеж. В нашей стране покупателя найти проблематично.
thermit
Цитата
не CIC и не развод


Если не CIC, то развод или заблуждение.
litv
Хотя бы запатентуйте для начала. Ну и нужно обьяснить сколько ресурсов Вы выиграли по сравнению с ких.
А так бихи приносят много секса изза высокой разрядности во всех во всех цепях.
Сам когдато лет 6 подряд делал многое на бих (1995-2001) - то разрядность, то полюса за 1, то перегрузка.
Неудобно на ПЛИС ложится.
Да и обработка на ПЛИС обычно идет с понижением частоты - тут то ких сразу всех и догоняют.
Fat Robot
В командной строке Матлаба надо набрать:
doc fdesign.arbgrpdelay
doc iirgrpdelay



litv
Есть книга расчет амплитудно-фазовых корректоров помоему автор Сильвинская. Там или фазу или амплитуду можно бих фильтрами делать. Мы ей пользовались . Советская книга еще.
thermit
Это фильтры с нелинейной фазой. А вообще говоря, да. Этого более чем достаточно для практических приложений.
Однако, топикстартер видимо изобрел нечто новое. Ждем-с примеров...
des00
Цитата(thermit @ Feb 18 2013, 07:13) *
Это фильтры с нелинейной фазой. А вообще говоря, да. Этого более чем достаточно для практических приложений.
Однако, топикстартер видимо изобрел нечто новое. Ждем-с примеров...

насчет нового не ясно пока, но есть статья IEEE от 2005 го года (ЕМНИП) где приводится алгоритм преобразования КИХ фильтра в БИХ фильтр с сохранением характеристик. Вроде даже челы патент на это получили.
V_G
Цитата(des00 @ Feb 19 2013, 00:37) *
приводится алгоритм преобразования КИХ фильтра в БИХ фильтр с сохранением характеристик.

Это как, была характеристика конечная, стала бесконечная, но при этом сохранилась? Может, имеется в виду преобразование в рекурсивный фильтр?
Например, КИХ фильтр со скользящим средним (с линейной фазой!) имеет очень экономичную рекурсивную реализацию. В остальных случаях может иметься в виду приближенное преобразование с заданной точностью. То же и про линейную фазу: она может быть линейна с какой-то погрешностью, аналоговые фильтры Бесселя тому пример.
des00
Цитата(V_G @ Feb 18 2013, 17:32) *
Это как, была характеристика конечная, стала бесконечная, но при этом сохранилась? Может, имеется в виду преобразование в рекурсивный фильтр?

статью искать надо, глянул поверх своих архивов не нашел. как найду выложу %)
brig01
Результат лучше этого?
voloda
Всем спасибо, все ответы учту.
Отдельное спасибо 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
thermit
А просто коэффициенты в плавающей точке без инт16 и симуликов не проще было выложить?

Цитата
voloda:
Нелинейность фазы в полосе пропускания - не более 10 градусов


Нелинейность фазы это что? Отклонение от линейной? Тогда что берется за образец?
Лучше приводить х-гу гвз. Это более информативно.
voloda
Цитата(thermit @ Feb 20 2013, 15:49) *
А просто коэффициенты в плавающей точке без инт16 и симуликов не проще было выложить?


Коэффициенты изначально рассчитываются в целых числах заданной разрядности. Поэтому - нет, не проще.
Симулинк нагляден. Даже в Матлабе такого не создать. ИМХО, конечно. В какой среде вы хотели бы получить модель?

Цитата(thermit @ Feb 20 2013, 15:49) *
Нелинейность фазы это что? Отклонение от линейной? Тогда что берется за образец?


Да. В качестве образца в модели считается фаза по формуле pi=F*2.899 . F- частота входного сигнала, pi - фаза

Цитата(thermit @ Feb 20 2013, 15:49) *
Лучше приводить х-гу гвз. Это более информативно.


Можно и гвз, Вы правы. Фазовые характеристики проще сравнивать, например, с искажениями, вносимыми АЦП. Одно и то же отклонение гвз от константы на разных частотах вызывает разные отклонения фазы от линейной. Поэтому выложил фазу.

Теория.

Новый метод проектирования цифровых БИХ фильтров позволяет:
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

Любые вопросы пишите сюда или напрямую автору. Контактные данные автора указаны в статьях по ссылкам выше.
thermit
Ну, раз так, вот вам критика.

На картинках сравнительные х-ки приведенного вами фильтра и фильтра рассчитанного скриптом
с избирательными х-ками примерно соответствующим вашим:

Код
[be,ae] = ellip(5,0.3,45,0.5);
f = 0:0.0005:0.5;
g = grpdelay(be,ae,f,2);  
a = max(g)-g;
[num,den]=iirgrpdelay(10, f, [0 0.5], a);
b2=conv(be,num);
a2=conv(ae,den);
b2=round(b2*32768)/32768;
a2=round(a2*32768)/32768;


АЧХ
Нажмите для просмотра прикрепленного файла

ФЧХ
Нажмите для просмотра прикрепленного файла

ГВЗ
Нажмите для просмотра прикрепленного файла

При формально равных порядках ваш фильтр проигрывает в линейности фазы эллиптическому с выравниванием.
Замечу, что у нашего фильтра коэффициенты квантованы 16-ю разрядами.
Квантование вообще не доставляет много проблем.

зы
1-ю статью прочитал по диагонали.
Позже почитаю внимательнее.








voloda
Цитата(thermit @ Feb 21 2013, 17:25) *
Ну, раз так, вот вам критика.


Большое спасибо за отклик.

Выполнил скрипт. Вектор а2 7-ой коэффициент 107,1364, 8-ой -100,5486. Это можно представить в инт16?
И вообще, м.б. вместо a2=round(a2*32768)/32768 надо как-то типа a2=int16(round(a2*32768))/32768 ? А то они целые, но по модулю не ограниченные (более 32768) могут выйти..
thermit
Цитата
voloda:
Вектор а2 7-ой коэффициент 107,1364, 8-ой -100,5486. Это можно представить в инт16?


А зачем? К-ты надо преобразовать в к-ты биквадратных секций. И уже полученные к-ты квантовать с какой нужно разрядностью.
В лоб такие фильтры да еще и в арифметике с фиксированной точкой никто не делает...
Это я для простоты так поступил. И несовсем корректно. При квантовании к-тов биквадратных секций картина принципиально не изменится.

voloda
Цитата(thermit @ Feb 21 2013, 19:37) *
При квантовании к-тов биквадратных секций картина принципиально не изменится.


А стабильность фильтр случайно не потеряет? Не могли бы Вы привести корректно посчитанные коэффициенты, для полноты картины?

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


Есть подозрение, что сразу в фиксированной точке можно рассчитывать легче и точнее, чем в плавающей.
thermit
Цитата
voloda:
А стабильность фильтр случайно не потеряет? Не могли бы Вы привести корректно посчитанные коэффициенты, для полноты картины?

Код
[be,ae] = ellip(5,0.3,50,0.5);
ff = 0:0.001:0.5;
g = grpdelay(be,ae,ff,2);  
a = max(g)-g;
[num,den]=iirgrpdelay(10, ff, [0 0.5], a);
b2=conv(be,num);
a2=conv(ae,den);
sos=tf2sos(b2,a2);
sos(:,1:3)=round(sos(:,1:3)*256)/256;% quantize 8 bit in 8.8 format
sos(:,5:6)=round(sos(:,5:6)*1024)/1024;% quantize 10 bit in 6.10 format
[m,n]=size(sos);
f=ones(1000,1);
g=zeros(1000,1);
plot(exp(j*2*pi/100*(0:99)));
hold on;
grid on;
for i=m:-1:1
    f=f.*freqz(sos(i,1:3),sos(i,4:6),1000);
    g=g+grpdelay(sos(i,1:3),sos(i,4:6),1000);
    plot(roots(sos(i,4:6)+0.00000000001*1j),'rx');
end;
figure(2);
plot(20*log10(abs(f)));
grid on;
figure(3);
plot(g);
grid on;


Все полюсы остаются по модулю < 1. Так что фильтр устойчивый.

Цитата
Есть подозрение, что сразу в фиксированной точке можно рассчитывать легче и точнее, чем в плавающей.


А вот это совсем не факт. По сути, расчет фильтра - поиск нулей-полюсов (z0 -p0) минимизирующий некоторый функционал.
Если наложить ограничения на количество значащих цифр в коэффициентах, оптимальные в этом смысле нули-полюсы z-p будут лежать
в каких-то окрестностях с центрами в z0-p0. Что эквивалентно квантованию. Радиусы этих окрестностей будут определяться суровостью квантования.
Да, возможно, что к-ты при таком расчете будут другими, но в целом ошибка аппроксимации меньше не будет.

Fat Robot
Если оптимизация неравновесная, то по идее совместный синтез-квантование должен дать выигрыш.

voloda
Теперь фильтр thermit - а действительно лучше.

И я считал, что синтез одновременно по АЧХ + ФЧХ + квантование должен быть лучше. Пока так не вышло.

Буду думать, почему так.
thermit
Это не мои фильтры. Расчет таких фильтров достаточно подробно описан в Рабинер Голд Теория и применение ЦОС. В матлабе есть внятная реализация.
voloda
Получилось рассчитывать фильтры с коэффициентами менее 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.gif
voloda
Up. Уважаемые форумчане!
Если есть известные способы рассчета фильтров с коэффициентами меньше 8-ми бит, подскажите, пожалуйста! 1111493779.gif
thermit
Цитата
voloda:
Если есть известные способы рассчета фильтров с коэффициентами меньше 8-ми бит, подскажите, пожалуйста!



Рассчитываете к-ты в плавающей точке и квантуете их хоть 1 битом.

ps
На мой дилетанский взгляд, тема гроша выеденного не стоит...
TSerg
Цитата(thermit @ Mar 16 2013, 15:04) *
Рассчитываете к-ты в плавающей точке и квантуете их хоть 1 битом.

ps
На мой дилетанский взгляд, тема гроша выеденного не стоит...


Могут быть ньансы, связанные с наличием более оптимальных, чем грубо квантованных коэффициентов, с точки зрения требований к ЧХ. Решается численными оптимизирующими расчетами.
Но тема, действительно - яйцо выеденное sm.gif
voloda
Цитата(thermit @ Mar 16 2013, 15:04) *
Рассчитываете к-ты в плавающей точке и квантуете их хоть 1 битом.


Это как? К-ты фильтра с плавающей точкой могут отличаться на порядки. Под каждый коэффициент свой формат, что ли?


Цитата
Могут быть ньансы, связанные с наличием более оптимальных, чем грубо квантованных коэффициентов, с точки зрения требований к ЧХ. Решается численными оптимизирующими расчетами.


Собственно, я об том же. Весь метод - это и есть оптимизирование. Весь вопрос, есть ли какие-то преимущества по сравнению с другими, известными оптимизационными методами.
thermit
Цитата
voloda:
Это как? К-ты фильтра с плавающей точкой могут отличаться на порядки. Под каждый коэффициент свой формат, что ли?


К-ты знаменателя биквадратной секции всегда в диапазоне +-2.
К-ты числителя - да, могут отличаться значительно. Числитель квантуется отдельно, знаменатель -отдельно.
Честно говоря, не вижу проблем. Вы пытаетесь изобрести нечто, что уже давно изобретено.


Цитата
TSerg:
Могут быть ньансы, связанные с наличием более оптимальных, чем грубо квантованных коэффициентов, с точки зрения требований к ЧХ.


Вы очень туманно про нюансы пишете. Целевая функция имеет 1 локальный минимум и любое квантование к-тов даст смещение от этого минимума. Я не очень понимаю термин "грубое квантование". Чем оно отличается от негрубого? Требования к ачх заключаютя в максимальном отклонении ее от идеала. Если квантование к-тов удовлетворяет этому критерию чего тут еще оптимизировать?
voloda
Цитата(thermit @ Mar 17 2013, 00:04) *
К-ты знаменателя биквадратной секции всегда в диапазоне +-2.

Если не секрет - почему?
Цитата(thermit @ Mar 17 2013, 00:04) *
К-ты числителя - да, могут отличаться значительно. Числитель квантуется отдельно, знаменатель -отдельно.

Если привести и числитель и знаменатель к одному формату - разрядность аккумулятора можно будет понизить, вроде бы.
Цитата(thermit @ Mar 17 2013, 00:04) *
Честно говоря, не вижу проблем. Вы пытаетесь изобрести нечто, что уже давно изобретено.

Увы, очень может быть. До Ваших ответов вообще не знал многое про возможности БИХ-фильтров. laughing.gif
Цитата(thermit @ Mar 17 2013, 00:04) *
Вы очень туманно про нюансы пишете. Целевая функция имеет 1 локальный минимум и любое квантование к-тов даст смещение от этого минимума.

Вопрос - насколько сильно меняется положение минимума после квантования? Остается ли он после этого глобальным? Был "узкий" глобальный минимум, его нашли до квантования. После кв-ия он сместился так, что перестал быть глобальным, или вообще перестал быть минимумом.
Цитата
Требования к ачх заключаютя в максимальном отклонении ее от идеала. Если квантование к-тов удовлетворяет этому критерию чего тут еще оптимизировать?

Оптимизировать - что бы уменьшить ресурсы, необходимые для реализации фильтра в железе.
thermit
Цитата
voloda:
Если не секрет - почему?


Устойчивый фильтр имеет полюсы внутри единичной окружности (<1 по модулю);

если полюсы r*exp(+-j*alpha)
то a1 = 2*r*cos(alpha) - при r<1 a1<2
a2 = r^2 - при r<1 a2<1

Цитата
Если привести и числитель и знаменатель к одному формату - разрядность аккумулятора можно будет понизить, вроде бы.


Разрядность аккумулятора полностью определяется требованиями к шуму фильтра.

Цитата
Увы, очень может быть. До Ваших ответов вообще не знал многое про возможности БИХ-фильтров

Надо книжки читать. Рабинер Голд Теория и применение цос

Цитата
Вопрос - насколько сильно меняется положение минимума после квантования? Остается ли он после этого глобальным? Был "узкий" глобальный минимум, его нашли до квантования. После кв-ия он сместился так, что перестал быть глобальным, или вообще перестал быть минимумом.


Минимум не зависит от квантования. Он (его положение )зависит от целевой ф-ции. Если все к-ты квантуются одинаково - происходит смещение от минимума. Если речь идет о квантовании разных к-тов разным числом разрядов - это уже другая целевая функция со своим минимумом. И возможно, такая оптимизация может дать лучший результат чем одинаковое квантование всех к-тов. На сколько эти минимумы будут отличаться? Никто вам не ответит на этот вопрос.
TSerg
Цитата(thermit @ Mar 17 2013, 00:04) *
Я не очень понимаю термин "грубое квантование". Чем оно отличается от негрубого?


Отвечаю с опозданием:

Вы уже и так все верно расписали - важна целевая функция "квантования".
Если она чисто математическая, то вполне возможно, что получим совсем не ту частотно-фазовую систему (ЧФС) и совсем не с той линейностью, которую хотели.
Если задать целевую функцию в зависимости от параметров и допуска их для достижения желаемой ЧФС - тут и встает вопрос в полный рост.

Пример из аналоговой ЧФС: - рассчитали идеальный фильтр 7-го порядка по Чебышеву, но Заказчик/Поставщик обломал расчетчика рядом E12 sm.gif
В данном случае это и будет "грубым" квантованием.
Однако, поиграв номиналами в рамках того же Е12, можно достичь оптимального значения одного или нескольких выходных системных параметров.

Аналогичные процессы (и даже хуже) присущи процессу перехода от "точных" вычисленных коэффициентов в сетке современных ЭВМ к квантованным коэффициентам в заданной разрядной сетке какого-либо микропроцессора.
Понятно, что выбор его должен решаться исходя из заданного качества решения, но иногда бывает присуща заданность его реализации, стоимостная оценка, исследовательская составляющая и т.д и т.п.
voloda
Цитата(thermit @ Mar 17 2013, 21:33) *
Устойчивый фильтр имеет полюсы внутри единичной окружности (<1 по модулю)
...
Разрядность аккумулятора полностью определяется требованиями к шуму фильтра.

Спасибо!
Цитата(thermit @ Mar 17 2013, 21:33) *
Минимум не зависит от квантования...

Ушел осмыслять.

Цитата(TSerg @ Mar 17 2013, 23:34) *
Если задать целевую функцию в зависимости от параметров и допуска их для достижения желаемой ЧФС - тут и встает вопрос в полный рост.

Пример из аналоговой ЧФС: - рассчитали идеальный фильтр 7-го порядка по Чебышеву, но Заказчик/Поставщик обломал расчетчика рядом E12 sm.gif
В данном случае это и будет "грубым" квантованием.
Однако, поиграв номиналами в рамках того же Е12, можно достичь оптимального значения одного или нескольких выходных системных параметров.

Аналогичные процессы (и даже хуже) присущи процессу перехода от "точных" вычисленных коэффициентов в сетке современных ЭВМ к квантованным коэффициентам в заданной разрядной сетке какого-либо микропроцессора.

Как раз такие задачи мы можем решать. rolleyes.gif
Если приведете какие-нибудь еще примеры, где есть сложные ограничения на коэффициенты - буду рад порешать. biggrin.gif
TSerg
Так у меня вопросов-то нет sm.gif
avtoneru
Подниму-ка тему. Последнее время пришлось активно копать тему IIR c линейной фазой - FIR просто физически нужный мне МК не "тянул".
Как оказалось - новое (для меня) - это забытое старое.
Как оказалось, линейным по фазе можно сделать любой IIR фильтр, если использовать "разворот времени", т.е. всю входящую последовательность просчитать в прямом и обратном порядке.
Предлагаю прочитать, как эту идею реализовывали и дорабатывали для работы в режиме реального времени. Судя по написанному - заманчиво.
Для меня остается непонятным, почему об этом алгоритме очень мало известно?

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла
RCray
Цитата(avtoneru @ May 22 2015, 08:11) *
Подниму-ка тему. Последнее время пришлось активно копать тему IIR c линейной фазой - FIR просто физически нужный мне МК не "тянул".
Как оказалось - новое (для меня) - это забытое старое.
Как оказалось, линейным по фазе можно сделать любой IIR фильтр, если использовать "разворот времени", т.е. всю входящую последовательность просчитать в прямом и обратном порядке.
Предлагаю прочитать, как эту идею реализовывали и дорабатывали для работы в режиме реального времени. Судя по написанному - заманчиво.
Для меня остается непонятным, почему об этом алгоритме очень мало известно?

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла


Потому что весь сигнал должен быть известен заранее. Как раз одна из вами приведенных статей и описывает работу с аудио. В других областях весь сигнал не всегда доступен и обработать его так в реальном времени не представляется возможным.
~Elrond~
Задался я тут целью минимизировать задержку в приёмном тракте. Сейчас для обеспечения требуемой избирательности используется FIR ~128 порядка на частоте дискретизации 9.6 кГц, что соответствует задержке ~6.7 мс (64 отсчёта). Сделал аналогичный по характеристикам эллиптический фильтр, получился примерно 12 порядок. Казалось бы - задержка должна быть в 10 раз меньше. Но прикрутив выравниватель фазы (нужна линейная), получил результаты по ГВЗ в несколько раз хуже, чем при использовании КИХ 128 порядка! Можно ли с этим что-нибудь поделать?
petrov
Цитата(~Elrond~ @ Apr 20 2016, 00:38) *
(нужна линейная)


Она же не сама по себе нужна, а для чего-то?
Corner
Если действительные коэффициенты заменить комплексными, то проблему соотношения линейности фазы и задержки можно частично решить.

Цитата(petrov @ Apr 20 2016, 15:45) *
Она же не сама по себе нужна, а для чего-то?


Чтобы ГВЗ на разных частотах в пределах ППФ была одинаковая, фаза должна быть линейной функцией. Это очевидно.
petrov
Цитата(Corner @ Apr 20 2016, 18:21) *
Чтобы ГВЗ на разных частотах в пределах ППФ была одинаковая,


Фетиш?
Corner
Цитата(petrov @ Apr 20 2016, 19:03) *
Фетиш?

Не знаю, как для ТСа, а в системах сбора данных требуют ошибку ГВЗ не хуже 1% в пределах ППФ. Чтобы потребителю не считать коррецию по тысячам каналов.
~Elrond~
Цитата(petrov @ Apr 20 2016, 16:45) *
Она же не сама по себе нужна, а для чего-то?
Для PSK/QAM модемов, как минимум.
Цитата
Если действительные коэффициенты заменить комплексными, то проблему соотношения линейности фазы и задержки можно частично решить.
Каким образом? Расскажите пожалуйста поподробнее, или скажите, где почитать. Сейчас для FIR используются реальные коэффициенты и комплексный входной сигнал. Но ограничений по архитектуре фильтра у меня никаких нет, поэтому если с комплексным БИХ ГВЗ в полосе пропускания будет меньше и близким к константе - я им воспользуюсь.
petrov
Цитата(~Elrond~ @ Apr 21 2016, 00:48) *
Для PSK/QAM модемов, как минимум.


Например для PSK/QAM модемов требование сквозной линейной ФЧХ не является необходимым для отсутствия межсимвольной интерференции.
Corner
Цитата(petrov @ Apr 21 2016, 03:15) *
Например для PSK/QAM модемов требование сквозной линейной ФЧХ не является необходимым для отсутствия межсимвольной интерференции.

Логично. Проблемы решаемые эквалайзером много сложнее разброса ГВЗ по ППФ.
petrov
Цитата(Corner @ Apr 21 2016, 11:05) *
Логично. Проблемы решаемые эквалайзером много сложнее разброса ГВЗ по ППФ.


Без эквалайзера, АБГШ у нас, не является необходимостью сквозная линейная ФЧХ для отсутствия МСИ.
Corner
Цитата(petrov @ Apr 21 2016, 13:10) *
Без эквалайзера, АБГШ у нас, не является необходимостью сквозная линейная ФЧХ для отсутствия МСИ.

Странно. При некотором разбросе фазы по ППФ МСИ неизбежен. Особенно, если это ФКМ с большим количеством углов. Более того, при сильно изрезанной ФЧХ, равномерная АЧХ невозможна даже теоретически. Это уже точно МСИ.
Другое дело, что я такой фильтр применять бы не стал. Он ничем не лучше имеющихся.
petrov
Легко представить несимметричнную сквозную импульсную характеристику без МСИ, если жёсткий бюджет на задержку, можно заморочится и минимально-фазовым FIR.
~Elrond~
У нас речь идёт о приёме 8PSK сигналов с SNR вплоть до -10. При таких условиях любые дополнительные искажения, вносимые трактом, могут помешать. Нужен именно такой IIR, у которого было бы константное ГВЗ в ППФ не более 20 отсчётов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.