Ответ полосового фильтра

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

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

  2. Используйте circuit, capacitor и inductor с функцией add, чтобы программно создать схему Баттерворта.

  3. Используйте setports, чтобы задать схему как сеть с 2 портами.

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

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

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

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

  8. Используйте 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;

Программно создайте схему

Прежде, чем создать схему с помощью inductor и объектов capacitor, мы должны пронумеровать узлы схемы, показанной в фигуре 1.

Рисунок 2: числа Узла добавляются к полосовому фильтру Баттерворта.

Создайте объект circuit и заполните его с inductor и объектами capacitor с помощью функции add.

ckt = circuit('butterworthBPF');

add(ckt,[3 2],inductor(Ls))
add(ckt,[4 3],capacitor(Cs))
add(ckt,[5 4],capacitor(Cs))
add(ckt,[6 5],inductor(Ls))

add(ckt,[4 1],capacitor(Cp))
add(ckt,[4 1],inductor(Lp))
add(ckt,[4 1],inductor(Lp))
add(ckt,[4 1],capacitor(Cp))

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

Чтобы извлечь S-параметры от объекта схемы, сначала используйте функцию setports, чтобы задать схему как сеть с 2 портами. Если схема имеет порты, используйте sparameters, чтобы извлечь S-параметры на частотах интереса.

freq = linspace(2e9,3e9,101);

setports(ckt,[2 1],[6 1])
S = sparameters(ckt,freq);

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

Используйте функцию s2tf, чтобы сгенерировать передаточную функцию от S-объекта-параметра. Затем используйте rationalfit, чтобы соответствовать данным о передаточной функции к рациональной функции.

tfS = s2tf(S);
fit = rationalfit(freq,tfS);

Проверьте рациональное подходящее приближение

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

widerFreqs = linspace(2e8,5e9,1001);
resp = freqresp(fit,widerFreqs);

figure
semilogy(freq,abs(tfS),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 создает такой сигнал из 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)')

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

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

Для примера того, как вычислить и отобразить этот ответ полосового фильтра с помощью объектов RFCKT, перейдите в: Ответ Полосового фильтра Используя Объекты RFCKT.