В этом примере показано, как управлять порядком фильтра, неравномерностью в полосе пропускания, затуханием в полосе задерживания и шириной области перехода КИХ-фильтра 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')