Минимизация КИХ-длины фильтра Lowpass

Этот пример показывает, как минимизировать коэффициенты номера путем разработки фильтров минимального заказа или минимальной фазы.

Проект фильтра минимальной фазы Lowpass

Чтобы запуститься, настройте параметры фильтра и использование 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);

До сих пор мы только рассмотрели проекты линейной фазы. Линейная фаза желательна во многих приложениях. Тем не менее, если линейная фаза не является требованием, проекты минимальной фазы могут обеспечить существенные улучшения по линейным дубликатам фазы. Например, возвращаясь к случаю минимального заказа, проект minimum-phase/minimum-order для тех же спецификаций может быть вычислен с:

  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')

Минимальный заказ проект фильтра Lowpass Используя многоступенчатые методы

Другой подход к минимизации количества коэффициентов, которое не включает проекты минимальной фазы, должен использовать многоступенчатые методы. Здесь мы показываем интерполированного КИХ (IFIR) подход.

  Hd5 = ifir(Hf);
  hfvt3 = fvtool(Hd1,Hd5,'Color','White');
  legend(hfvt3,'Linear-phase equirriple design',...
        'Linear-phase IFIR design')

Количество ненулевых коэффициентов, требуемых в случае IFIR, равняется 111. Меньше и, чем equiripple линейная фаза и, чем проекты минимальной фазы.