Документация Engee

sos2ctf

Преобразование данных секций второго порядка цифрового фильтра в форму каскадной передаточной функции.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • B,A = sos2ctf(sos,g) — также задает масштабные коэффициенты g для масштабирования коэффициента усиления по секциям передаточной функции системы.

Аргументы

Входные аргументы

# sos — представление секций второго порядка
матрица

Details

Представление секций второго порядка, заданное как матрица размером , где — количество секций второго порядка. Матрица

представляет собой секции второго порядка функции :

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# g — масштабные коэффициенты
1 | скаляр | вектор

Details

Масштабные коэффициенты, заданные как скаляр или вектор с вещественными значениями, содержащий элементов, где — количество секций второго порядка.

Функция sos2ctf применяет коэффициент усиления к секциям фильтра с помощью функции scaleFilterSections. В зависимости от значения, указанного в аргументе g:

  • скаляр — функция равномерно распределяет коэффициент усиления по всем секциям фильтра;

  • вектор — функция применяет первые значений коэффициента усиления к соответствующим секциям фильтра и равномерно распределяет последнее значение коэффициента усиления по всем секциям фильтра.

Выходные аргументы

# B,A — коэффициенты каскадной передаточной функции
матрицы L × 3

Details

Коэффициенты каскадной передаточной функции, возвращаемые в виде матриц размером на , где — количество секций второго порядка.

В матрицах B и A перечислены коэффициенты числителя и знаменателя каскадной передаточной функции соответственно. Дополнительную информацию см. в разделе Представление цифровых фильтров в формате CTF.

Примеры

Секции второго порядка для каскадной передаточной функции

Details

Преобразуем матрицу секций второго порядка в форму каскадной передаточной функции.

import EngeeDSP.Functions: sos2ctf

sos = [2 4 2 1 0 0; 3 2 0 1 1 0]

ctfB, ctfA = sos2ctf(sos)
println("ctfB = ", ctfB, "\nctfA = ", ctfA)
ctfB = [2 4 2; 3 2 0]
ctfA = [1 0 0; 1 1 0]

Дополнительно

Каскадные передаточные функции

Details

Разбиение цифрового БИХ-фильтра на каскадные секции повышает его численную устойчивость и снижает восприимчивость к ошибкам квантования коэффициентов. Каскадная форма передаточной функции , выраженная через передаточных функций , имеет вид

butter ru

Представление цифровых фильтров в формате CTF

Details

Укажите аргументы B и A, чтобы получить коэффициенты фильтра. Указав эти выходные аргументы, вы можете проектировать цифровые фильтры в формате CTF для анализа, визуализации и фильтрации сигналов.

Коэффициенты фильтра

Если вы указываете представление коэффициентов числителя и знаменателя в формате CTF, -строчные матрицы и возвращаются в виде

таким образом, что полная передаточная функция фильтра равна

где порядок числителя фильтра, а порядок знаменателя.

Для визуализации и анализа фильтров в формате CTF могут быть использованы следующие функции:

Алгоритмы

Функция sos2ctf вычисляет коэффициенты числителя и знаменателя секций каскадной передаточной функции на основе коэффициентов секций второго порядка фильтрующей системы.

Выходные аргументы B и A содержат коэффициенты каскадной передаточной функции второго порядка фильтрующей системы, расположенные в строках.

  • Каждая строка матриц A и B содержит коэффициенты в каждой секции.

  • Функция sos2ctf возвращает матрицы B и A размером на , где последние два столбца соответствуют членам и для каждой каскадной секции фильтрующей системы.

Для матрицы секций второго порядка sos и единичного масштабного коэффициента (g = 1) значения для B и A будут следующими:

B = sos[:, 1:3];
A = sos[:, 4:6];

Если вы укажете аргумент g, функция sos2ctf распределит значения масштабных коэффициентов из g по коэффициентам числителя, так что значения для B и A будут следующими:

B = scaleFilterSections(sos[:, 1:3], g);
A = sos[:, 4:6];

Литература

  1. Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.