yulewalk
Проектирование рекурсивного цифрового фильтра.
| Библиотека |
|
Аргументы
Входные аргументы
#
n —
порядок фильтра
положительный целочисленный скаляр
Details
Порядок фильтра, заданный как положительный целочисленный скаляр.
| Типы данных |
|
#
f —
значения частоты
вектор
Details
Значения частоты, заданные как вектор с элементами в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста, или половине частоты дискретизации. Первый элемент f должен быть равен 0, а последний — 1. Все промежуточные элементы должны располагаться в порядке возрастания. Вектор f может иметь повторяющиеся значения частоты, соответствующие ступеням частотной характеристики.
| Типы данных |
|
Выходные аргументы
#
b, a —
коэффициенты фильтра
векторы-строки
Details
Коэффициенты фильтра, возвращаемые в виде векторов-строк. Коэффициенты выходного фильтра упорядочены в порядке убывания степеней :
Примеры
Проектирование фильтра нижних частот по методу Юла — Уокера
Details
Спроектируем фильтр нижних частот 8-го порядка с нормированной частотой среза 0.6. Построим его частотную характеристику и наложим на нее характеристику соответствующего идеального фильтра.
import EngeeDSP.Functions: yulewalk, freqz
f1 = [0, 0.6, 0.6, 1]
m1 = [1, 1, 0, 0]
b1,a1 = yulewalk(8,f1,m1)
h1,w1 = freqz(b1,a1,128)
p = plot(w1/π, mag2db.(abs.(h1)),
xlabel = "ω/π",
ylabel = "Magnitude (dB)",
grid = true,
legend = false,
linecolor = :blue)
vline!(f1[2:3], linestyle = :dash, linecolor = :black)

Увеличим затухание в полосе подавления, указав более широкую переходную полосу.
f2 = [0, 0.55, 0.6, 0.65, 1]
m2 = [1, 1, 0.5, 0, 0]
b2,a2 = yulewalk(8,f2,m2);
h2,w2 = freqz(b2,a2,128)
plot!(w2/π, mag2db.(abs.(h2)),
linecolor = :red)

Советы
При задании частотной характеристики избегайте чрезмерно резких переходов от полосы пропускания к полосе заграждения. Возможно вам потребуется поэкспериментировать с наклоном переходной области, чтобы получить оптимальную конструкцию фильтра.
Алгоритмы
Функция yulewalk конструирует рекурсивные цифровые БИХ-фильтры, используя метод наименьших квадратов для аппроксимации к заданной частотной характеристике. Аппроксимация выполняется во временной области.
-
Для вычисления коэффициентов знаменателя функция
yulewalkиспользует модифицированные уравнения Юла — Уокера, коэффициенты корреляции которых вычисляются с помощью обратного преобразования Фурье заданной частотной характеристики. -
Для вычисления числителя функция
yulewalkвыполняет следующие шаги:-
Вычисляет полином числителя, соответствующий аддитивному разложению характеристики мощность-частота.
-
Вычисляет полную частотную характеристику, соответствующую полиномам числителя и знаменателя.
-
Использует метод спектральной факторизации для получения импульсной характеристики фильтра.
-
Получает полином числителя путем аппроксимации методом наименьших квадратов этой импульсной характеристики.
-