В этом примере показано, как вычислить ответ временной области простого полосно-пропускающего фильтра:
Выберите значения индуктивности и емкости с помощью классического метода проекта параметров изображения.
Использование rfckt.seriesrlc
, rfckt.shuntrlc
,
и rfckt.cascade
объекты для программного создания схемы Butterworth как 2-портовой сети.
Использование analyze
для извлечения S-параметров 2-портовой сети в широкой частотной области значений.
Использование s2tf
функция для вычисления передаточной функции напряжения от входа до выхода.
Использование rationalfit
функция для генерации рациональных подгонок, которые захватывают идеальную схему RC с очень высокой степенью точности.
Создайте шумную форму входа напряжения.
Использование timeresp
функция для вычисления переходного процесса к шумному входу волне напряжения.
Метод проекта параметра изображения является средой для аналитического вычисления значений последовательных и параллельных компонентов в пассивных фильтрах. Для получения дополнительной информации об этом методе смотрите «Полный беспроводной проект» Коттера У. Сайра, McGraw-Hill 2008 стр. 331.
Фигура 1: Полосовой фильтр Butterworth, выполненный из двух половинных секций.
Следующий код MATLAB ® генерирует значения компонентов для полосно-пропускающего фильтра с более низкой частотой отключения 3-dB 2,4 ГГц и верхней частотой отключения 3 дБ 2,5 ГГц.
Ro = 50; f1C = 2400e6; f2C = 2500e6; Ls = (Ro / (pi*(f2C - f1C)))/2; Cs = 2*(f2C - f1C)/(4*pi*Ro*f2C*f1C); Lp = 2*Ro*(f2C - f1C)/(4*pi*f2C*f1C); Cp = (1/(pi*Ro*(f2C - f1C)))/2;
Базовые блоки L и C формируются путем выбора соответствующих значений с rfckt.shuntrlc
объект, показанный на фигуре 2 или на rfckt.seriesrlc
объект, показанный на фигура. Затем стандартные блоки соединяются вместе с rfckt.cascade
как показано на фигура.
Фигура 2: Сеть с 2 портами, созданная rfckt.shuntrlc
объект
Фигура 3. Сеть с 2 портами, созданная rfckt.seriesrlc
объект
Фигура 4. Соединение 2-портовых сетей с rfckt.cascade
объект
Seg1 = rfckt.seriesrlc('L',Ls,'C',Cs); Seg2 = rfckt.shuntrlc('L',Lp,'C',Cp); Seg3 = rfckt.shuntrlc('L',Lp,'C',Cp); Seg4 = rfckt.seriesrlc('L',Ls,'C',Cs); cktBPF = rfckt.cascade('Ckts',{Seg1,Seg2,Seg3,Seg4});
The analyze
функция извлекает S-параметры из схемы по заданному вектору частот. Этот пример предоставляет набор частот, который охватывает полосу пропускания фильтра и анализирует с 50-Ohm по умолчанию ссылкой, импедансом источника и импедансами нагрузки. Далее, s2tf
функция вычисляет передаточную функцию напряжения для S-параметрической модели схемы. Наконец, мы генерируем высокоточное рациональное приближение, используя rationalfit
функция. Получившееся приближение соответствует сети точности машины.
freq = linspace(2e9,3e9,101); analyze(cktBPF,freq); sparams = cktBPF.AnalyzedResult.S_Parameters; tf = s2tf(sparams); fit = rationalfit(freq,tf);
Используйте freqresp
функция для проверки, что рациональное приближение соответствия имеет разумное поведение вне обеих сторон установленной частотной области значений.
widerFreqs = linspace(2e8,5e9,1001); resp = freqresp(fit,widerFreqs); figure semilogy(freq,abs(tf),widerFreqs,abs(resp),'--','LineWidth',2) xlabel('Frequency (Hz)') ylabel('Magnitude') legend('data','fit') title('The rational fit behaves well outside the fitted frequency range.')
Этот полосно-пропускающий фильтр должен быть способен восстановить синусоидальный сигнал на частоте 2,45 ГГц, который шумит благодаря включению нулевого среднего случайного шума и блокирующего устройства на частоте 2,35 ГГц. Следующий код MATLAB создает такой сигнал из 4096 выборок.
fCenter = 2.45e9; fBlocker = 2.35e9; period = 1/fCenter; sampleTime = period/16; signalLen = 8192; t = (0:signalLen-1)'*sampleTime; % 256 periods input = sin(2*pi*fCenter*t); % Clean input signal rng('default') noise = randn(size(t)) + sin(2*pi*fBlocker*t); noisyInput = input + noise; % Noisy input signal
The timeresp
функция вычисляет аналитическое решение уравнений в пространстве состояний, заданных рациональной подгонкой и входным сигналом.
output = timeresp(fit,noisyInput,sampleTime);
Постройте график входного сигнала, шумного входного сигнала и полосы фильтра выхода в окне рисунка.
xmax = t(end)/8; figure subplot(3,1,1) plot(t,input) axis([0 xmax -1.5 1.5]) title('Input') subplot(3,1,2) plot(t,noisyInput) axis([0 xmax floor(min(noisyInput)) ceil(max(noisyInput))]) title('Noisy Input') ylabel('Amplitude (volts)') subplot(3,1,3) plot(t,output) axis([0 xmax -1.5 1.5]) title('Filter Output') xlabel('Time (sec)')
Наложение шумного входа и фильтрующей характеристики в частотный диапазон объясняет, почему операция фильтрации успешна. И сигнал блокировщика на 2,35 ГГц, и большая часть шума значительно ослаблены.
NFFT = 2^nextpow2(signalLen); % Next power of 2 from length of y Y = fft(noisyInput,NFFT)/signalLen; samplingFreq = 1/sampleTime; f = samplingFreq/2*linspace(0,1,NFFT/2+1)'; O = fft(output,NFFT)/signalLen; figure subplot(2,1,1) plot(freq,abs(tf),'b','LineWidth',2) axis([freq(1) freq(end) 0 1.1]) legend('filter transfer function') ylabel('Magnitude') subplot(2,1,2) plot(f,2*abs(Y(1:NFFT/2+1)),'g',f,2*abs(O(1:NFFT/2+1)),'r','LineWidth',2) axis([freq(1) freq(end) 0 1.1]) legend('input+noise','output') title('Filter characteristic and noisy input spectrum.') xlabel('Frequency (Hz)') ylabel('Magnitude (Volts)')