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

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

The 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 объект для создания необходимого фильтра. Единственным типом реализации для Обратного Чебышева является '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

Опционально используйте Control System Toolbox, чтобы визуализировать все передаточные функции.

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/highpass) или квартальных (bandpass/bandstop) факторизованных форм. Эти факторы используются для построения полиномов. Полиномиальная форма является численно нестабильной для большего порядка фильтра, поэтому предпочтительной формой является факторизованная квадратичная/квартальная формы. Эти факторизованные части присутствуют в r. DesignData. Для примера к числителю 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}).

Используя всплывающие подсказки, найдена амплитуда 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] Ellis, Michael G. Electronic Filter Analysis and Synthesis. Бостон: Артек Хаус, 1994.

Похожие темы