Ответ полосового фильтра Используя объекты RFCKT

В этом примере показано, как вычислить ответ временного интервала простого полосового фильтра:

  1. Выберите значения индуктивности и емкости с помощью классического метода разработки параметра изображения.

  2. Используйте rfckt.seriesrlc, rfckt.shuntrlc, и rfckt.cascade объекты программно создать схему Баттерворта как сеть с 2 портами.

  3. Используйте analyze извлекать S-параметры сети с 2 портами по широкому частотному диапазону.

  4. Используйте s2tf функция, чтобы вычислить передаточную функцию напряжения от входа до выхода.

  5. Используйте rationalfit функция, чтобы сгенерировать рациональные подгонки, которые получают идеальную схему RC в очень высокой степени точности.

  6. Создайте шумную форму волны входного напряжения.

  7. Используйте timeresp функция, чтобы вычислить переходный процесс к шумной форме волны входного напряжения.

Спроектируйте полосовой фильтр параметрами изображения

Метод разработки параметра изображения является средой для того, чтобы аналитически вычислить значения ряда и параллельных компонентов в пассивных фильтрах. Для получения дополнительной информации об этом методе см. "Полный Беспроводной Проект" Коттера В. Сэйри, McGraw-Hill 2008 p. 331.

Рисунок 1: полосовой фильтр Баттерворта создается из двух полуразделов.

Следующий код MATLAB® генерирует значения компонента для полосового фильтра с более низкой частотой среза на 3 дБ 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;

Программно создайте схему как сеть с 2 портами

L и базовые блоки C формируются путем выбора соответствующих значений с rfckt.shuntrlc объект показан в рисунке 2 или rfckt.seriesrlc объект показан в рисунке 3. Базовые блоки затем соединяются вместе с rfckt.cascade как показано в рисунке 4.

Рисунок 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});

Извлеките S-параметры из сети с 2 портами

analyze функционируйте извлекает S-параметры из схемы по заданному вектору из частот. Этот пример обеспечивает набор частот, который охватывает полосу пропускания фильтра и анализирует со ссылкой на 50 Ом по умолчанию, исходным импедансом и импедансами загрузки. Затем 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.')

Figure contains an axes object. The axes object with title The rational fit behaves well outside the fitted frequency range. contains 2 objects of type line. These objects represent data, fit.

Создайте входной сигнал, чтобы протестировать фильтр передачи полосы

Этот полосовой фильтр должен смочь восстановить синусоидальный сигнал на уровне 2,45 ГГц, который сделан шумным включением нулевого среднего случайного шума и блокировщика на уровне 2,35 ГГц. Следующий код MATLAB создает такой сигнал из 4 096 выборок.

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

Вычислите переходный процесс к входному сигналу

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)')

Figure contains 3 axes objects. Axes object 1 with title Input contains an object of type line. Axes object 2 with title Noisy Input contains an object of type line. Axes object 3 with title Filter Output contains an object of type line.

Просмотрите входной сигнал и отфильтруйте ответ в частотном диапазоне

Накладывание шумного входа и ответа фильтра в частотном диапазоне объясняет, почему операция фильтрации успешна. И сигнал блокировщика на уровне 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)')

Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents filter transfer function. Axes object 2 with title Filter characteristic and noisy input spectrum. contains 2 objects of type line. These objects represent input+noise, output.

Похожие темы