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

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

  1. Используйте классический проект параметра изображения, чтобы присвоить значения индуктивности и емкости полосовому фильтру.

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

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

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

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

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

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

  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;         % Ls1 and Ls2
Cs = 2*(f2C - f1C)/(4*pi*Ro*f2C*f1C);   % Cs1 and Cs2

Lp = 2*Ro*(f2C - f1C)/(4*pi*f2C*f1C);   % Lp1 and Lp2
Cp = (1/(pi*Ro*(f2C - f1C)))/2;         % Cp1 and Cp2

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

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

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

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

ckt = circuit('butterworthBPF');

add(ckt,[3 2],inductor(Ls));      % Ls1
add(ckt,[4 3],capacitor(Cs));     % Cs1
add(ckt,[5 4],capacitor(Cs));     % Cs2
add(ckt,[6 5],inductor(Ls));      % Ls2

add(ckt,[4 1],capacitor(Cp));     % Cp1
add(ckt,[4 1],inductor(Lp));      % Lp1
add(ckt,[4 1],inductor(Lp));      % Lp2
add(ckt,[4 1],capacitor(Cp));     % Cp2

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

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

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

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

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

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

tfS = s2tf(S);
fit = rational(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 создает такой сигнал из 8 192 выборок.

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');
title('Transfer function of Bandpass filter');
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.