В этом примере показано, как управлять порядком фильтра, пульсацией полосы пропускания, затуханием полосы останова и шириной переходной области фильтра FIR нижних частот.
При нацеливании на пользовательское оборудование часто встречаются случаи, когда количество коэффициентов ограничено заданным числом. В этих случаях конструкции минимального порядка бесполезны, поскольку отсутствует контроль над результирующим порядком фильтра. В качестве примера предположим, что может быть использован только 101 коэффициент и должны быть выполнены спецификации ослабления пульсации/затухания полосы пропускания. Мы по-прежнему можем использовать равноудаленные конструкции для этих спецификаций. Однако мы теряем контроль над шириной перехода, которая будет увеличиваться. Это цена, которую необходимо заплатить за уменьшение заказа при сохранении характеристик пульсации/затухания полосы пропускания.
Рассмотрим простую конструкцию фильтра нижних частот с частотой отсечки 0,4 * пи радиан на образец:
Ap = 0.06;
Ast = 60;
Fp = 0.38;
Fst = 0.42;
Hf=fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast);Спроектируйте равноконтактный фильтр:
Hd1 = design(Hf,'equiripple','systemobject',true);
Установите число коэффициентов равным 101, что означает установку порядка 100:
N = 100;
Fc = 0.4;
setspecs(Hf,'N,Fc,Ap,Ast',N,Fc,Ap,Ast);Спроектируйте второй эквириппный фильтр с заданным ограничением:
Hd2 = design(Hf,'equiripple','systemobject',true);
Измерьте переменные фильтра второго равнозначного фильтра и сравните графики первого и второго фильтров:
measure(Hd2)
ans = Sample Rate : N/A (normalized frequency) Passband Edge : 0.37316 3-dB Point : 0.39285 6-dB Point : 0.4 Stopband Edge : 0.43134 Passband Ripple : 0.06 dB Stopband Atten. : 60 dB Transition Width : 0.058177
hfvt = fvtool(Hd1,Hd2,'Color','White'); legend(hfvt,'Equiripple design, 146 coefficients', ... 'Equiripple design, 101 coefficients')

Переход увеличился почти на 50%. Это неудивительно, учитывая почти 50% разницу между 101 и 146 коэффициентами.
Другой вариант, когда установлено количество коэффициентов, заключается в поддержании ширины перехода за счет управления пульсацией полосы пропускания/затуханием полосы останова.
setspecs(Hf,'N,Fp,Fst',N,Fp,Fst); Hd3 = design(Hf,'equiripple','systemobject',true); measure(Hd3)
ans = Sample Rate : N/A (normalized frequency) Passband Edge : 0.38 3-dB Point : 0.39407 6-dB Point : 0.4 Stopband Edge : 0.42 Passband Ripple : 0.1651 dB Stopband Atten. : 40.4369 dB Transition Width : 0.04
hfvt2 = fvtool(Hd1,Hd3,'Color','White'); legend(hfvt2,'Equiripple design, 146 coefficients',... 'Equiripple design, 101 coefficients')

Различия между использованием 146 коэффициентов и использованием 101 коэффициентов отражаются в большей пульсации полосы пропускания и меньшем ослаблении полосы останова.
Можно увеличить затухание в полосе останова при сохранении одинакового порядка фильтра и ширины перехода за счет использования весов. Веса являются способом определения относительной важности пульсации полосы пропускания по сравнению с затуханием полосы останова. По умолчанию полоса пропускания и полоса останова имеют одинаковый вес (каждому назначается вес, равный единице). Если мы увеличим вес стоп-полосы, мы можем увеличить ослабление стоп-полосы за счет увеличения пульсации стоп-полосы.
Hd4 = design(Hf,'equiripple','Wstop',5,'systemobject',true); measure(Hd4)
ans = Sample Rate : N/A (normalized frequency) Passband Edge : 0.38 3-dB Point : 0.39143 6-dB Point : 0.39722 Stopband Edge : 0.42 Passband Ripple : 0.34529 dB Stopband Atten. : 48.0068 dB Transition Width : 0.04
hfvt3 = fvtool(Hd3,Hd4,'Color','White'); legend(hfvt3,'Passband weight = 1, Stopband weight = 1',... 'Passband weight = 1, Stopband weight = 5')

Другой возможностью является определение требуемого точного затухания полосы останова и потеря контроля над пульсацией полосы пропускания. Это мощная и очень желательная спецификация. Один имеет контроль над большинством интересующих параметров.
setspecs(Hf,'N,Fp,Fst,Ast',N,Fp,Fst,Ast); Hd5 = design(Hf,'equiripple','systemobject',true); hfvt4 = fvtool(Hd4,Hd5,'Color','White'); legend(hfvt4,'Equiripple design using weights',... 'Equiripple design constraining the stopband')
