В этом примере показано, как вычислить ответ временного интервала простого полосового фильтра. Восемь шагов, вовлеченных в вычисление ответа временного интервала простого полосового фильтра,
Используйте классический проект параметра изображения, чтобы присвоить значения индуктивности и емкости полосовому фильтру.
Используйте circuit
, capacitor
, и inductor
объекты с add
функционируйте, чтобы программно создать схему Баттерворта.
Используйте setports
функция, чтобы задать схему как сеть с 2 портами.
Используйте sparameters
функционируйте, чтобы извлечь S-параметры сети с 2 портами по широкому частотному диапазону.
Используйте s2tf
функция, чтобы вычислить передаточную функцию напряжения от входа до выхода.
Используйте rational
объект сгенерировать рациональные подгонки, которые получают идеальную схему RC в очень высокой степени точности.
Используйте randn
функция, чтобы создать шум для того, чтобы создать шумную форму волны входного напряжения.
Используйте timeresp
function
вычислить переходный процесс к шумной форме волны входного напряжения.
Проект параметра изображения является средой для того, чтобы аналитически вычислить значения ряда и параллельных компонентов в пассивных фильтрах. Для получения дополнительной информации о Параметрах изображения см. "Полный Беспроводной Проект" Коттера В. Сэйри, McGraw-Hill 2008 p. 331.
Рисунок 1: полосовой фильтр Баттерворта создается из двух полуразделов.
Сгенерируйте значения компонента для полосового фильтра с более низкой частотой среза на 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-параметры из объекта схемы, сначала используйте setports
функция, чтобы задать схему как сеть с 2 портами.
freq = linspace(2e9,3e9,101);
Используйте sparameters
функционируйте, чтобы извлечь S-параметры на частотах интереса.
setports(ckt,[2 1],[6 1]) S = sparameters(ckt,freq);
Используйте s2tf
функция, чтобы сгенерировать передаточную функцию от S-объекта-параметра.
tfS = s2tf(S);
Используйте rational
возразите, чтобы соответствовать данным о передаточной функции к рациональной функции.
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('Rational Fit Approximation');
Чтобы протестировать полосовой фильтр, спроектированный методом Параметра изображения, синусоидальный сигнал на уровне 2,45 ГГц восстанавливается с шумного входного сигнала. Шумовой входной сигнал сгенерирован включением нулевого среднего случайного шума и блокировщика на уровне 2,35 ГГц к входному сигналу.
Создайте вход и шумный входной сигнал с 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.