exponenta event banner

Контроль проектных спецификаций при проектировании КИХ нижних частот

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

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent Equiripple design using weights, Equiripple design constraining the stopband.