Расчет нерекурсивного фильтра на основе модифицированного гармонического ряда Фурье, страница 6


t, c

Рис. 1. Импульсная характеристика


ω,р/с

Рис. 2. Амплитудно-частотная характеристика

 ω,р/с

Рис. 3. Фазо-частотная характеристика

Выводы

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

 при заданной 1,5,

,

=0,426, .

ФЧХ фильтра линейная, фазовая задержка tф=17,4с. График импульсной характеристики симметричен относительно значения времени t=17,6с, которому соответствует L=175.


Приложение

Листинг программы

SubDF_rass4et()

' Исходные данные

ConstOm_F = 12      ' верхняя граничная частота полосы пропускания

Constd_om_n = 1.5  ' ширина переходной полосы

ConstL = 175          ' количество членов ряда Фурье

Constdt = 0.1         ' шаг дискретизации по времени

ConstPi = 3.1416   ' число Пи

Constro = 0.54      ' коэффициент Хэмминга

' Объявление переменных

Dimom_BAsSingle  ' полупериод повторения АЧХ

DimOm_pAsSingle  ' верхняя граничная частота полосы пропускания

Dim sigma As Single ' множитель Хэмминга

Dim sumT As Single  ' время

Dim k As Integer, i As Integer   ' индексы для циклов

Dim a0 As Single, ak As Single ' коэффициенты ряда Фурье

Dim wk As Single    ' отсчеты ИХ

Dim Aw As Single   ' значение АЧХ

Dim Fw As Single   ' значение ФЧХ

Dim w As Single     ' частота

Dim sum As Single ' аккумулятор для АЧХ

' Вычисление требуемых частот

om_B = Pi / dt                       ' полупериод повторения АЧХ

Om_p = Om_F + d_om_n / 2 ' верхняя граничная частота полосы пропускания

'Вычисление отсчетов dt

Cells(1, 5) = "Время"

For k = 1 To (2 * L + 1)

sumT = sumT + dt

Cells(k + 1, 5) = sumT

Next

'Вычисление множителей Хэмминга

Cells(1, 6) = "Множители"

For k = 1 To (L + 1)

sigma = ro * (1 - ro) * Cos(k * Pi / L)

Cells(k + 1, 6) = sigma

Next

'Вычисление коэффициентов ряда Фурье

Cells(1, 7) = "Коэффициенты"

a0 = 0

Cells(2, 7) = a0

For k = 1 To L

ak = (2 * om_B * (Sin(k * dt * Om_p) - k * dt * Om_p * Cos(k * dt * Om_p))) / (k * Pi) ^ 2

Cells(k + 2, 7) = ak

Next

'Вычисление отсчетов ИХ

Cells(1, 10) = "Отсчеты ИХ"

For k = 0 To (2 * L)

If k < L Then

sigma = Cells(L - k + 2, 6)

ak = Cells(L - k + 2, 7)

wk = 0.5 * sigma * ak

Cells(k + 2, 10) = wk

Else

sigma = Cells(k - L + 2, 6)

ak = Cells(k - L + 2, 7)

wk = -0.5 * sigma * ak

Cells(k + 2, 10) = wk

End If

Next

'Вычисление АЧХ и ФЧХ

Cells(1, 11) = "Частота"

Cells(1, 12) = "Отсчеты АЧХ"

Cells(1, 13) = "Отсчеты ФЧХ"

i = 1

For w = 0 To om_B Step (2 * om_B / (2 * L + 1))

sum = 0

For k = 1 To L

wk = Cells(L - k + 2, 10)

sum = sum + 2 * wk * Sin(k * dt * w)

Next

Cells(i + 1, 11) = w                ' частота

Aw = Abs(sum)

Cells(i + 1, 12) = Aw               ' АЧХ

Fw = Pi / 2 - L * dt * w

Cells(i + 1, 13) = Fw               ' ФЧХ

i = i + 1

Next

End Sub