В этом примере показано, как спроектировать инверсию четвертого порядка Чебышев фильтр lowpass с частотой полосы задерживания 10 000 рад/секунда и эпсилоном 0,01 [1] использование rffilter
. Этот rffilter
мог использоваться в circuit
или в rfbudget
объект.
rffilter
объект используется, чтобы спроектировать фильтр РФ. Фильтр требует, чтобы минимальный набор для параметров полностью задал его.
Параметры, чтобы спроектировать обратный Чебышевский фильтр могут быть одним из следующего:
Порядок фильтра, частота Полосы пропускания, Passband & Stopband Attenuation
Полоса пропускания и частоты Полосы задерживания, Passband & Stopband Attenuation
Порядок фильтра, частота Полосы задерживания, Затухание в полосе задерживания
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 + 1082.39220029239i
0 - 1082.39220029239i
0 + 2613.12592975275i
0 - 2613.12592975275i
poles_21 = p % Same denominator for S11, S12, S21 and S22
poles_21 = 4×1 complex
-171.158733950657 + 476.096694464131i
-171.158733950657 - 476.096694464131i
-504.530434776367 + 240.786480832184i
-504.530434776367 - 240.786480832184i
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
1 0 1171572.87525381
0.00999950003749688 0 68280.8572899443
disp('Denominator of Transfer function as factors:');
Denominator of Transfer function as factors:
r.DesignData.Denominator
ans = 2×3
1 342.317467901314 255963.374687264
1 1009.06086955273 312529.088967178
В качестве альтернативы используйте |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.
Парманн Л. Д., проект и анализ аналоговых фильтров: перспектива обработки сигналов. Norwell, MA: Kluwer академические издатели, 2001.