В этом примере показано, как спроектировать инверсию четвертого порядка Чебышев фильтр lowpass с частотой полосы задерживания 10 000 рад/секунда и эпсилоном 0,01 (смотрите ссылочный раздел), использование rffilter
. Этот rffilter
мог использоваться в circuit
или в rfbudget
объект.
rffilter
объект используется, чтобы спроектировать фильтр RF. Фильтр требует, чтобы минимальный набор для параметров полностью задал его.
Параметры, чтобы спроектировать обратный Чебышевский фильтр могут быть одним из следующего:
Порядок фильтра, частота Полосы пропускания, Полоса пропускания и Затухание в полосе задерживания
Полоса пропускания и частоты Полосы задерживания, Полоса пропускания и Затухание в полосе задерживания
Порядок фильтра, частота Полосы задерживания, Затухание в полосе задерживания
N = 4; % Filter order Fs = 1000/(2*pi); % Stopband frequency epsilon = 0.01; Rs = 10*log10((1+epsilon^2)/epsilon^2); % Stopband attenuation
Используйте первый набор параметров, чтобы задать фильтр.
r = rffilter('FilterType','InverseChebyshev','ResponseType','Lowpass', ... 'Implementation','Transfer function','FilterOrder',N, ... 'PassbandFrequency',Fs,'PassbandAttenuation',Rs, ... 'StopbandAttenuation',Rs);
Примечание: Альтернатива, можно также использовать третий набор параметров, чтобы спроектировать тот же фильтр:
r = rffilter('FilterType','InverseChebyshev','ResponseType','Lowpass', ... 'Implementation','Transfer function','FilterOrder',N, ... 'StopbandFrequency',Fs,'StopbandAttenuation',Rs);
Ограничение этого набора параметров - то, что он принимает затухание полосы пропускания, которое будет зафиксировано в 10*log10 (2) дБ.
frequencies = linspace(0,2*Fs,1001); rfplot(r, frequencies);
Опционально, можно также использовать Signal Processing Toolbox, чтобы визуализировать аналоговое использование фильтра:
freqs(numerator{2,1},denominator)
[z,p,k] = zpk(r);
Можно получить нули, полюса и усиление Передаточной функции (S21):
format long g zeros_21 = z{2,1}
zeros_21 = 4×1 complex
0.0000 + 1.0824i
0.0000 - 1.0824i
0.0000 + 2.6131i
0.0000 - 2.6131i
poles_21 = p % Same denominator for S11, S12, S21 and S22
poles_21 = 4×1 complex
-1.7116 + 4.7610i
-1.7116 - 4.7610i
-5.0453 + 2.4079i
-5.0453 - 2.4079i
k_21 = k{2,1}
k_21 = 0.00999950003749688
Просмотрите эти, фактор формируется непосредственно из фильтра r.
disp('Numerator of Transfer function as factors:');
Numerator of Transfer function as factors:
r.DesignData.Numerator21
ans = 2×3
0.0000 0 1.1716
0.0000 0 0.0683
disp('Denominator of Transfer function as factors:');
Denominator of Transfer function as factors:
r.DesignData.Denominator
ans = 2×3
0.0000 0.0034 2.5596
0.0000 0.0101 3.1253
В качестве альтернативы используйте |zpk | от Control System Toolbox, чтобы просмотреть передаточную функцию в разложенной на множители форме.
G_s = zpk(zeros_21,poles_21,k_21)
G_s = 0.0099995 (s^2 + 1.172e06) (s^2 + 6.828e06) ------------------------------------------------- (s^2 + 1009s + 3.125e05) (s^2 + 342.3s + 2.56e05) Continuous-time zero/pole/gain model.
[1] Парманн, L. D. Проект и анализ аналоговых фильтров: перспектива обработки сигналов. SECS 617. Бостон: Kluwer академические издатели, 2001.