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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
thermit
сообщение Feb 20 2013, 11:49
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



А просто коэффициенты в плавающей точке без инт16 и симуликов не проще было выложить?

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


Нелинейность фазы это что? Отклонение от линейной? Тогда что берется за образец?
Лучше приводить х-гу гвз. Это более информативно.

Сообщение отредактировал thermit - Feb 20 2013, 13:03
Go to the top of the page
 
+Quote Post
voloda
сообщение Feb 21 2013, 12:20
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



Цитата(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

Любые вопросы пишите сюда или напрямую автору. Контактные данные автора указаны в статьях по ссылкам выше.
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 21 2013, 13:25
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Ну, раз так, вот вам критика.

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

Код
[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;


АЧХ
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 69%
Прикрепленное изображение
561 x 420 (39.05 килобайт)


ФЧХ
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 69%
Прикрепленное изображение
561 x 420 (34.37 килобайт)


ГВЗ
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 69%
Прикрепленное изображение
561 x 420 (39.63 килобайт)


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

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








Go to the top of the page
 
+Quote Post
voloda
сообщение Feb 21 2013, 15:25
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



Цитата(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) могут выйти..
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 21 2013, 15:37
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
voloda:
Вектор а2 7-ой коэффициент 107,1364, 8-ой -100,5486. Это можно представить в инт16?


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

Go to the top of the page
 
+Quote Post
voloda
сообщение Feb 22 2013, 08:14
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



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


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

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


Есть подозрение, что сразу в фиксированной точке можно рассчитывать легче и точнее, чем в плавающей.
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 22 2013, 09:50
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
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. Что эквивалентно квантованию. Радиусы этих окрестностей будут определяться суровостью квантования.
Да, возможно, что к-ты при таком расчете будут другими, но в целом ошибка аппроксимации меньше не будет.

Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Feb 22 2013, 10:51
Сообщение #23


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



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

Go to the top of the page
 
+Quote Post
voloda
сообщение Feb 22 2013, 12:49
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



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

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

Буду думать, почему так.
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 22 2013, 13:36
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Это не мои фильтры. Расчет таких фильтров достаточно подробно описан в Рабинер Голд Теория и применение ЦОС. В матлабе есть внятная реализация.
Go to the top of the page
 
+Quote Post
voloda
сообщение Mar 13 2013, 12:51
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



Получилось рассчитывать фильтры с коэффициентами менее 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
Go to the top of the page
 
+Quote Post
voloda
сообщение Mar 16 2013, 06:40
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



Up. Уважаемые форумчане!
Если есть известные способы рассчета фильтров с коэффициентами меньше 8-ми бит, подскажите, пожалуйста! 1111493779.gif
Go to the top of the page
 
+Quote Post
thermit
сообщение Mar 16 2013, 11:04
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
voloda:
Если есть известные способы рассчета фильтров с коэффициентами меньше 8-ми бит, подскажите, пожалуйста!



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

ps
На мой дилетанский взгляд, тема гроша выеденного не стоит...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 16 2013, 11:53
Сообщение #29





Guests






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

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


Могут быть ньансы, связанные с наличием более оптимальных, чем грубо квантованных коэффициентов, с точки зрения требований к ЧХ. Решается численными оптимизирующими расчетами.
Но тема, действительно - яйцо выеденное sm.gif
Go to the top of the page
 
+Quote Post
voloda
сообщение Mar 16 2013, 17:13
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 4-12-09
Из: Н. Новгород
Пользователь №: 54 053



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


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


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


Собственно, я об том же. Весь метод - это и есть оптимизирование. Весь вопрос, есть ли какие-то преимущества по сравнению с другими, известными оптимизационными методами.
Go to the top of the page
 
+Quote Post

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

 


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


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