Преобразование параметров цифрового фильтра передаточной функции в секции второго порядка.
Библиотека
EngeeDSP
Синтаксис
Вызов функции
sos,g = tf2sos(b,a) — находит матрицу секций второго порядка sos с коэффициентом усиления g, эквивалентную цифровому фильтру, представленному векторами коэффициентов передаточной функции b и a.
sos,g = tf2sos(b,a,order) — задает порядок строк в аргументе sos.
sos,g = tf2sos(b,a,order,scale) — задает масштабирование коэффициентов усиления и числителя всех секций второго порядка.
sos = tf2sos(___,gain_out) — встраивает общий коэффициент усиления системы в первую секцию.
Коэффициенты передаточной функции, заданные как векторы. Выражение передаточной функции через b и a записывается следующим образом:
Типы данных
Float64
#order —
порядок строк
"up" (по умолчанию) | "down"
Details
Порядок строк, заданный одним из следующих способов:
"up" — упорядочить секции таким образом, чтобы первая строка аргумента sos содержала полюса, наиболее удаленные от единичной окружности;
"down" — упорядочить секции таким образом, чтобы первая строка аргумента sos содержала полюса, наиболее близкие к единичной окружности.
Типы данных
String
#scale —
масштабирование коэффициентов усиления и числителя
"none" (по умолчанию) | "inf" | "two"
Details
Масштабирование коэффициентов усиления и числителя, заданное одним из следующих способов:
"none" — масштабирование не применяется;
"inf" — масштабирование по бесконечной норме;
"two" — масштабирование по второй норме.
Использование масштабирования по бесконечной норме с порядком "up" минимизирует вероятность переполнения в реализации. Использование масштабирования по второй норме с порядком "down" минимизирует пиковый шум округления.
Масштабирование по бесконечной норме и по второй норме подходит только для реализаций в прямой форме II.
Типы данных
String
#gain_out —
количество выходных переменных
false (по умолчанию) | true
Общий коэффициент усиления системы, возвращаемый в виде вещественного скаляра.
Если вызвать функцию tf2sos с одним выходным аргументом, то функция встроит общий коэффициент усиления системы в первую секцию , так что
Встраивание коэффициента усиления в первую секцию при масштабировании структуры прямой формы II не рекомендуется и может привести к нестабильному масштабированию. Чтобы избежать встраивания коэффициента усиления, используйте tf2sos с двумя выходными аргументами.
Примеры
Система «масса-пружина»
Details
Одномерная дискретная колебательная система состоит из единичной массы , прикрепленной к стене пружиной с единичной упругой постоянной . Датчик регистрирует ускорение массы с частотой Гц.
Fs = 5
dt = 1 / Fs
N = 50
t = dt * (0:N-1)
u = [1.0; zeros(N-1)]
Передаточная функция системы имеет аналитическое выражение:
Система возбуждается единичным импульсом в положительном направлении. Вычислим временную эволюцию системы, используя передаточную функцию. Построим график отклика.
Вычислим зависящее от времени ускорение, используя представление передаточной функции в виде секций второго порядка для фильтрации входного сигнала. Построим график результата. Результат одинаков в обоих случаях.
Функция tf2sos использует четырехэтапный алгоритм для определения представления секции второго порядка для системы с передаточной функцией входного сигнала:
Она находит полюса и нули системы, заданные параметрами b и a.
Использует функцию zp2sos, которая сначала группирует нули и полюса в комплексно сопряженные пары с помощью функции cplxpair. Затем zp2sos формирует секции второго порядка, сопоставляя пары полюсов и нулей в соответствии со следующими правилами:
Сопоставьте полюса, ближайшие к единичной окружности, с нулями, ближайшими к этим полюсам.
Сопоставьте полюса, следующие по близости к единичной окружности, с нулями, ближайшими к этим полюсам.
Продолжайте, пока не будут сопоставлены все полюса и нули.
Функция tf2sos группирует вещественные полюса в секции, где вещественные полюса находятся ближе всего к ним по абсолютному значению. То же правило действует и для вещественных нулей.
Упорядочивает секции в соответствии с близостью пар полюсов к единичной окружности. Обычно tf2sos упорядочивает секции с полюсами, наиболее близкими к единичной окружности, последними в каскаде. Можно указать функции tf2sos, чтобы она упорядочила секции в обратном порядке, используя аргумент order.
Функция tf2sos масштабирует секции по норме, указанной в аргументе scale. Для произвольной функции масштабирование определяется следующим образом:
где может быть либо бесконечностью, либо 2. Подробную информацию о масштабировании см. в источниках в разделе Литература. Алгоритм следует этому масштабированию, чтобы минимизировать переполнение или пиковый шум округления в реализациях фильтров с фиксированной точкой.
Литература
Jackson, L. B. Digital Filters and Signal Processing. 3rd ed. Boston: Kluwer Academic Publishers, 1996.
Mitra, S. K. Digital Signal Processing: A Computer-Based Approach. 3rd ed. New York: McGraw-Hill Higher Education, 2006.
Vaidyanathan, P. P. «Robust Digital Filter Structures.» Handbook for Digital Signal Processing (S. K. Mitra and J. F. Kaiser, eds.). New York: John Wiley & Sons, 1993.