В этом примере показано, как определить передаточную функцию для инверсии пятого порядка Чебышев фильтр lowpass с затуханием полосы пропускания на 1 дБ, частотой среза 1 рад/секунда и минимальным затуханием 50 дБ в полосе задерживания. Определите амплитудный ответ в 2 рад/секунда [1].
rffilter object используется, чтобы спроектировать Фильтр RF. Фильтр требует, чтобы минимальный набор параметров для него был полностью задан. Обратитесь к таблице в rffilter страница документации, которая отражает этот набор обязательных параметров. Каждый набор параметров приводит к своему соответствующему синтаксису. Введите эти параметры как пары "имя-значение" к rffilter спроектировать заданный фильтр. Обратите внимание на то, что параметры, которые требуются, но не заданы, принимают значения по умолчанию.
После инициализации rffilter объект, свойство DesignData содержит полное решение спроектированного фильтра. Это - структура, которая содержит поля, такие как вычисленные разложенные на множители полиномы для конструкции передаточной функции.
N = 5; % Filter order Fp = 1/(2*pi); % Passband cutoff frequency Ap = 1; % Passband attenuation As = 50; % Stopband attenuation
Используйте rffilter объект создать желаемый фильтр. Единственным типом реализации для Обратного Чебышева является 'Передаточная функция'.
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. Например, к numerator21 можно получить доступ с помощью r.DesignData.Numerator 21.
l = rfplot(Sparam,2,1);

freq = 2/(2*pi); hold on; setrfplot('noengunits',false);
Примечание: Чтобы использовать rfplot и график на той же фигуре используют setrfplot. Введите 'справку setrfplot' в командном окне для получения информации.
plot(freq*ones(1,101),linspace(-120,20,101)); setrfplot('engunits',false); [~,freq_index]= min(abs(frequencies-freq)); datatip(l,'DataIndex',freq_index);

Используя всплывающие подсказки, величина в 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'
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, 1994.