В этом примере показано, как вычислить ответ временной области простого полосно-пропускающего фильтра. Восемь шагов, участвующих в вычислении временной характеристики простого полосно-пропускающего фильтра, являются,
Используйте проект параметра изображения, чтобы присвоить значения индуктивности и емкости полосно-пропускающему фильтру.
Используйте circuit
, capacitor
, и inductor
объекты с add
функция для программного создания схемы Баттерворта.
Используйте setports
функция для определения схемы как сети с 2 портами.
Используйте sparameters
функция для извлечения S-параметров 2-портовой сети в широкой частотной области значений.
Используйте s2tf
функция для вычисления передаточной функции напряжения от входа до выхода.
Используйте rational
объект для генерации рациональных подгонок, которые захватывают идеальную RC схему с очень высокой степенью точности.
Используйте randn
функция для создания шума в порядок для создания шумного входа волны напряжения.
Используйте timeresp
function
вычислить переходный процесс на шумный вход напряжения.
Проект параметра изображения является средой для аналитического вычисления значений последовательных и параллельных компонентов в пассивных фильтрах. Для получения дополнительной информации о параметрах изображений смотрите «Полный беспроводной проект» Коттера У. Сайра, McGraw-Hill 2008 стр. 331.
Фигура 1: Полосовой фильтр Butterworth, выполненный из двух половинных секций.
Сгенерируйте значения компонентов для полосно-пропускающего фильтра с меньшей частотой отсечения 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
объекты, узлы в схеме пронумерованы. Это показано на рисунок.
Фигура 2. Номера узлов добавлены к полосно-пропускающему фильтру Butterworth.
Создайте 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');
Для тестирования полосно-пропускающего фильтра, разработанного методом Image Parameter, синусоидальный сигнал на 2,45 ГГц восстанавливается из шумного входного сигнала. Входной сигнал шума генерируется включением нулевого среднего случайного шума и блокирующего устройства на 2,35 ГГц к входному сигналу.
Создайте вход и зашумленный входной сигнал с 8192 выборок.
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.