exponenta event banner

Проектирование, визуализация и исследование обратного фильтра Чебышева - I

В этом примере показано, как определить передаточную функцию для обратного фильтра нижних частот пятого порядка Чебышева с затуханием полосы пропускания 1 дБ, частотой отсечки 1 рад/с и минимальным затуханием 50 дБ в полосе отсечки. Определите амплитудную характеристику при 2 рад/с [1].

rffilter object используется для проектирования радиочастотного фильтра. Для полного определения фильтра требуется минимальный набор параметров. См. таблицу в rffilter страница документации, которая отражает этот набор требуемых параметров. Каждый набор параметров приводит к соответствующему синтаксису. Введите эти параметры как пары имя-значение в rffilter для проектирования указанного фильтра. Обратите внимание, что требуемые, но не определенные параметры принимают значения по умолчанию.

После инициализации rffilter объект, свойство DesignData содержит полное решение разработанного фильтра. Это структура, которая содержит такие поля, как вычисленные факторизованные многочлены для построения передаточной функции.

Конструкция фильтра Чебышева типа II

N           = 5;            % Filter order
Fp          = 1/(2*pi);     % Passband cutoff frequency 
Ap          = 1;            % Passband attenuation
As          = 50;           % Stopband attenuation

Использовать rffilter для создания требуемого фильтра. Единственным типом реализации для Inverse Chebyshev является Transfer function.

r = rffilter('FilterType','InverseChebyshev','ResponseType','Lowpass',  ...
    'Implementation','Transfer function','FilterOrder',N,               ...
    'PassbandFrequency',Fp,'StopbandAttenuation',As,                    ...
    'PassbandAttenuation',Ap);

Создание и визуализация полинома передаточной функции

Использовать tf функция для формирования полиномов передаточной функции.

[numerator, denominator] = tf(r);
format long g

Отображение Numerator21 полиномиальных коэффициентов.

disp('Numerator polynomial coefficients of Transfer function');
Numerator polynomial coefficients of Transfer function
disp(numerator{2,1});
  Columns 1 through 3

        0.0347736250821381                         0         0.672768334081369

  Columns 4 through 5

                         0           2.6032214373595

Показать коэффициенты многочлена Знаменателя.

disp('Denominator polynomial coefficients of Transfer function');
Denominator polynomial coefficients of Transfer function
disp(denominator);
  Columns 1 through 3

                         1          3.81150884154936           7.2631952221038

  Columns 4 through 6

          8.61344575257214          6.42982763112227           2.6032214373595

При необходимости используйте панель инструментов системы управления для визуализации всех функций передачи.

G_s = tf(numerator,denominator)
G_s =
 
  From input 1 to output...
                                 s^5
   1:  --------------------------------------------------------
       s^5 + 3.812 s^4 + 7.263 s^3 + 8.613 s^2 + 6.43 s + 2.603
 
                   0.03477 s^4 + 0.6728 s^2 + 2.603
   2:  --------------------------------------------------------
       s^5 + 3.812 s^4 + 7.263 s^3 + 8.613 s^2 + 6.43 s + 2.603
 
  From input 2 to output...
                   0.03477 s^4 + 0.6728 s^2 + 2.603
   1:  --------------------------------------------------------
       s^5 + 3.812 s^4 + 7.263 s^3 + 8.613 s^2 + 6.43 s + 2.603
 
                                 s^5
   2:  --------------------------------------------------------
       s^5 + 3.812 s^4 + 7.263 s^3 + 8.613 s^2 + 6.43 s + 2.603
 
Continuous-time transfer function.

Визуализация амплитудной характеристики фильтра

frequencies = linspace(0,1,1001);
Sparam      = sparameters(r, frequencies);

Примечание: S-параметры вычисляют передаточную функцию с использованием квадратичных (lowpass/high pass) или квартических (bandpass/bandstop) факторизованных форм. Эти факторы используются для построения полиномов. Полиномиальная форма является численно нестабильной для большего порядка фильтрации, поэтому предпочтительной формой является факторизованная квадратичная/квартическая форма. Эти факторизованные части присутствуют в r. Данные проектирования. Например, к числителю 21 можно обратиться, используя r. DesignData. Numerator21.

l = rfplot(Sparam,2,1);

Figure contains an axes. The axes contains an object of type line. This object represents dB(S_{21}).

Амплитудная характеристика фильтра на заданной частоте

freq     = 2/(2*pi);
hold on;
setrfplot('noengunits',false);

Примечание.Для использования rfplot и печати на одной фигуре используйте setrfplot. Для получения информации введите help setrfplot в командной строке.

plot(freq*ones(1,101),linspace(-120,20,101));
setrfplot('engunits',false);
[~,freq_index]= min(abs(frequencies-freq));
datatip(l,'DataIndex',freq_index);

Figure contains an axes. The axes contains 2 objects of type line. This object represents dB(S_{21}).

С помощью метода datatip было установлено, что величина 2 рад/с равна -36,59 дБ.

Вычислите точное значение 2 рад/сек.

S_freq   = sparameters(r,freq);

As_freq  = 20*log10(abs(rfparam(S_freq,2,1)));
sprintf('Amplitude response at 2 rad/sec is %d dB',As_freq)
ans = 
'Amplitude response at 2 rad/sec is -3.668925e+01 dB'

Вычислить частоту полосы останова при As

Fs      = r.DesignData.Auxiliary.Wx*r.PassbandFrequency;
sprintf('Stopband frequency at -%d dB is: %d Hz',As, Fs)
ans = 
'Stopband frequency at -50 dB is: 3.500241e-01 Hz'

Ссылки

[1] Эллис, Майкл Г. Электронный анализ и синтез фильтров. Бостон: Artech House, 1994.

Связанные темы