Вход/Регистрация
Maple 9.5/10 в математике, физике и образовании
вернуться

Дьяконов Владимир Павлович

Шрифт:

Установим значение x(n) равным 0 для времени меньше 0 и 1 для времени t>=0.

> for n from -M to -1 do x[n] := 0; od:

> for n from 0 to T do x[n] := Dirac(n); od:

Вычислим временную зависимость для выходного сигнала.

> for n from 0 to Т do y[n] := sum(h[k]*x[n-k], k=0..N); od:

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

> р := [seq{[j/fs, y[j]], j=0..Т)]:

> plot(р, time=0..3*N/fs, labels=[time,output], axes=boxed,

xtickmarks=4, title=`Импульсная характеристика фильтра`, color=black);

Он показан на рис. 11.33. Нетрудно заметить, что эта характеристика свидетельствует об узкополосности фильтра, поскольку его частоты fl и fh различаются не сильно. В этом случае полосовой фильтр по своим свойствам приближается к резонансному, хотя само по себе явление резонанса не используется.

Рис. 11.33. Импульсная характеристика цифрового фильтра

Вычислим АЧХ фильтра, используя прямое преобразование Фурье. Оно, после подготовки обрабатываемых массивов, реализуется функцией FFT:

> ro := array(1..Т+1):io := array(1..Т+1):

> for n from 0 to T do ro[n+1] := y[n]; io[n+1] := 0; od:

> FFT(m,ro,io):

Построим график АЧХ фильтра:

> р := [seq( [j*fs/(Т+1),abs(ro[j + 1]+io[j + 1]*I)], j=0..T/2)]:

> plot(p, frequency=0..fs/2, labels=[frequency,gain], title=`AЧX

фильтра`, color=black);

Он представлен на рис. 11.34. Нетрудно заметить, что и впрямь АЧХ фильтра напоминает АЧХ резонансной цепи — она имеет вид узкого пика. Вы можете легко проверить, что раздвижением частот fl и fh можно получить АЧХ с довольно плоской вершиной и резкими спадами (говорят, что такая характеристика приближается к прямоугольной).

Рис. 11.34. АЧХ цифрового полосового фильтра

Теперь приступим к тестированию фильтра. Зададим входной сигнал в виде зашумленного меандра с частотой 500 Гц и размахом напряжения 2 В:

> l := round(fs/2/500):

> for n from 0 by 2*1 to T do

> for n2 from 0 to l-1 do

> if n+n2 <= T then

> x[n+n2] := evalf(-l+rand/10^12-0.5);

> fi;

> if n+n2+1 <= T then

> x[n+n2+1] := evalf(1+rand/10^12-0.5);

> fi;

> od:

> od:

Временная зависимость синтезированного входного сигнала представлена на рис. 11.35.

Рис. 11.35. Синтезированный входной сигнал

Вычислим реакцию фильтра на входной сигнал:

> for n from 0 to Т do

> y[n] : = sum(h[k]*х[n-k], k=0..N);

> od:

Построим график выходного сигнала.

> р := [seq([j/fs, x[j]], j=0..T)]: q:=[seq([j/fs, y[j]], j=0..T)]:

> plot(p, time=0..T/fs/4, labels=[time,volts], title= `Входной сигнал`, color=black);

> plot(q, time=0..T/fs/4, labels=[time, volts], title=`Выгодной сигнал`, color=black);

Временна́я зависимость выходного сигнала показана на рис. 11.36. Нетрудно заметить, что, в конце концов, выходной сигнал вырождается в пятую гармонику входного сигнала, но этому предшествует довольно заметный переходной процесс. Он связан с узкополосностью данного фильтра.

Рис. 11.36. Временна́я зависимость выходного сигнала цифрового фильтра

Вычислим спектры входного и выходного сигналов, подготовив массивы выборок сигналов и применив прямое преобразование Фурье с помощью функции FFT:

> ri := array(1..Т+1): ii := array(1..Т+1):

> for n from 0 to T do

> ri[n+1] := x[n]*2/T; ii[n+1] := 0;

> ro[n+1] := y[n]*2/T; io[n+1] := 0;

  • Читать дальше
  • 1
  • ...
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: