Этот пример показывает, как минимизировать числовые коэффициенты, путем разработки фильтров минимального или минимального порядка.
Чтобы запустить, настройте параметры фильтра и используйте fdesign
чтобы создать конструктор для разработки фильтра.
N = 100;
Fp = 0.38;
Fst = 0.42;
Ap = 0.06;
Ast = 60;
Hf = fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast);
Пока мы рассматривали только линейно-фазовые проекты. Линейная фаза желательна во многих приложениях. Тем не менее, если линейная фаза не является обязательной, минимально-фазовые проекты могут обеспечить значительные улучшения по сравнению с линейно-фазовыми аналогами. Например, возвращаясь к случаю минимального порядка, проект минимальной фазы/минимального порядка для тех же спецификаций может быть вычислена с:
Hd1 = design(Hf,'equiripple','systemobject',true); Hd2 = design(Hf,'equiripple','minphase',true,... 'systemobject',true); hfvt = fvtool(Hd1,Hd2,'Color','White'); legend(hfvt,'Linear-phase equiripple design',... 'Minimum-phase equiripple design')
Заметьте, что количество коэффициентов было уменьшено со 146 до 117. В качестве второго примера рассмотрим проект с полосой остановки, распадающейся линейным образом. Заметьте усиление затухания в полосе задерживания. Также неравномерность в полосе пропускания значительно меньше.
setspecs(Hf,'N,Fp,Fst',N,Fp,Fst); Hd3 = design(Hf,'equiripple','StopbandShape','linear',... 'StopbandDecay',53.333,'systemobject',true); setspecs(Hf,'Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast); Hd4 = design(Hf,'equiripple','StopbandShape','linear',... 'StopbandDecay',53.333,'minphase',true,'systemobject',true); hfvt2 = fvtool(Hd3,Hd4,'Color','White'); legend(hfvt2,'Linear-phase equiripple design with linearly decaying stopband',... 'Minimum-phase equiripple design with linearly decaying stopband')
Другой подход к минимизации количества коэффициентов, который не включает минимально-фазовые проекты, состоит в том, чтобы использовать многоступенчатые методы. Здесь мы покажем интерполированный подход конечной импульсной характеристики (IFIR).
Hd5 = ifir(Hf); hfvt3 = fvtool(Hd1,Hd5,'Color','White'); legend(hfvt3,'Linear-phase equirriple design',... 'Linear-phase IFIR design')
Количество ненулевых коэффициентов, требуемых в случае IFIR, составляет 111. Меньше, чем линейная фаза равновесия и минимальная фаза проектов.