Этот пример показывает, как управлять порядком фильтра, пульсацией полосы пропускания, затуханием полосы задерживания и шириной области перехода lowpass КИХ-фильтра.
При предназначении для специального оборудования распространено найти случаи, где количество коэффициентов ограничивается к номеру набора. В этих случаях проекты минимального заказа не полезны, потому что нет никакого управления получившимся порядком фильтра. Как пример, предположите, что только 101 коэффициент мог использоваться, и спецификациям затухания пульсации/полосы задерживания полосы пропускания нужно соответствовать. Мы можем все еще использовать проекты equiripple для этих спецификаций. Однако мы теряем контроль над шириной перехода, которая увеличится. Это - цена, чтобы заплатить за сокращение порядка при поддержании спецификаций затухания пульсации/полосы задерживания полосы пропускания.
Рассмотрите простой проект фильтра lowpass с частотой среза 0.4*pi радианы на выборку:
Ap = 0.06;
Ast = 60;
Fp = 0.38;
Fst = 0.42;
Hf=fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast);
Разработайте фильтр equiripple:
Hd1 = design(Hf,'equiripple','systemobject',true);
Определите номер коэффициентов к 101, что означает устанавливать порядок к 100:
N = 100;
Fc = 0.4;
setspecs(Hf,'N,Fc,Ap,Ast',N,Fc,Ap,Ast);
Разработайте второй фильтр equiripple с данным ограничением:
Hd2 = design(Hf,'equiripple','systemobject',true);
Измерьте переменные фильтра второго фильтра equiripple и сравните графики первых и вторых фильтров:
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')