Преобразование параметров цифрового фильтра в пространстве состояний в секции второго порядка.
Библиотека
EngeeDSP
Синтаксис
Вызов функции
sos,g = ss2sos(A,B,C,D) — возвращает матрицу секций второго порядка sos с коэффициентом усиления g, эквивалентную системе состояний, представленной входными аргументами A, B, C и D. Входная система состояний должна быть одновыходной и вещественной.
sos,g = ss2sos(A,B,C,D,iu) — задает индекс iu, указывающий, какой вход системы состояний A, B, C, D функция использует при преобразовании.
sos,g = ss2sos(A,B,C,D,order) — задает порядок строк в матрице sos с помощью аргумента order.
sos,g = ss2sos(A,B,C,D,iu,order,scale) — задает желаемое масштабирование коэффициента усиления и коэффициентов числителя всех секций второго порядка.
sos = ss2sos(___) — встраивает общий коэффициент усиления системы g в первую секцию. Можно указать комбинацию входных аргументов любого из предыдущих синтаксисов.
Матрица сквозной передачи, заданная как матрица. Если система имеет входов и выходов и описывается переменными состояния, то матрица D имеет размер на .
#order —
порядок строк
"up" (по умолчанию) | "down"
Details
Порядок строк в матрице sos, заданный одним из следующих способов:
"up" — упорядочить секции таким образом, чтобы первая строка матрицы sos содержала полюса, наиболее удаленные от единичной окружности;
"down" — упорядочить секции таким образом, чтобы первая строка матрицы sos содержала полюса, наиболее близкие к единичной окружности.
Нули сопоставляются с полюсами, наиболее близкими к ним.
#scale —
масштабирование коэффициентов усиления и числителя
"none" (по умолчанию) | "inf" | "two"
Details
Масштабирование коэффициентов усиления и числителя, заданное одним из следующих значений:
"none" — масштабирование не применяется;
"inf" — масштабирование по бесконечной норме;
"two" — масштабирование по второй норме.
Использование масштабирования по бесконечной норме с порядком "up" минимизирует вероятность переполнения в реализации. Использование масштабирования по второй норме с порядком "down" минимизирует пиковый шум округления.
Масштабирование по бесконечной норме и по второй норме подходит только для реализаций в прямой форме II.
Выходные аргументы
#sos —
представление секции второго порядка
матрица
Details
Представление секции второго порядка, возвращаемое в виде матрицы. Аргумент sos — это матрица размером
строки которой содержат коэффициенты числителя и знаменателя и секций второго порядка функции :
Общий коэффициент усиления системы, возвращаемый в виде вещественного скаляра.
Если вызвать функцию ss2sos с одним выходным аргументом, то функция встроит общий коэффициент усиления системы в первую секцию , так что
Встраивание коэффициента усиления в первую секцию при масштабировании структуры прямой формы II не рекомендуется и может привести к нестабильному масштабированию. Чтобы избежать встраивания коэффициента усиления, используйте ss2sos с двумя выходными аргументами: sos и g.
Примеры
Представление фильтра в виде секций второго порядка
Details
Разработаем фильтр нижних частот Баттерворта 5-го порядка, задав частоту среза равной рад/отсчет и представив выходной сигнал в форме пространства состояний. Преобразуем результат в пространстве состояний в секции второго порядка. Визуализируем частотную характеристику фильтра.
import EngeeDSP.Functions: butter, ss2sos
A, B, C, D = butter(5, 0.2, out = 4)
sos, g = ss2sos(A, B, C, D)
println("sos = ", sos)
import EngeeDSP.Functions: freqz
freqz(sos, out = :plot)
Система «масса-пружина»
Details
Одномерная дискретная колебательная система состоит из единичной массы , прикрепленной к стене пружиной с единичной упругой постоянной . Датчик регистрирует ускорение массы с частотой Гц.
Осциллятор можно описать уравнениями пространства состояний:
где — вектор состояния, и — соответственно положение и скорость массы, а матрицы
A = [cos(dt) sin(dt); -sin(dt) cos(dt)]
B = [1 - cos(dt); sin(dt)]
C = [-1 0]
D = 1
Система возбуждается единичным импульсом в положительном направлении. Используем модель пространства состояний для вычисления временной эволюции системы, начиная с нулевого начального состояния.
u = [1; zeros(N-1)]
x = [0.0; 0.0]
y = zeros(N)
for k = 1:N
y[k] = (C * x)[1] + D * u[k]
global x = A * x + B * u[k]
end
Построим график зависимости ускорения массы от времени.
Вычислим зависимость ускорения от времени, используя передаточную функцию для фильтрации входного сигнала. Выразим передаточную функцию в виде секций второго порядка. Построим график результата. Результат одинаков в обоих случаях.
Функция ss2sos использует четырехэтапный алгоритм для определения представления секции второго порядка для входной системы пространства состояний:
Она находит полюса и нули системы, заданные параметрами A, B, C и D.
Использует функцию zp2sos, которая сначала группирует нули и полюса в комплексно-сопряженные пары с помощью функции cplxpair. Затем zp2sos формирует секции второго порядка путем объединения пар полюсов и нулей в соответствии со следующими правилами:
Объединить полюса, ближайшие к единичной окружности, с нулями, ближайшими к этим полюсам.
Объединить полюса, следующие по близости к единичной окружности, с нулями, ближайшими к этим полюсам.
Продолжать, пока не будут объединены все полюса и нули.
Функция ss2sos группирует вещественные полюса в секции, где вещественные полюса находятся ближе всего к ним по абсолютному значению. То же правило действует и для вещественных нулей.
Упорядочивает секции в соответствии с близостью пар полюсов к единичной окружности. Обычно ss2sos упорядочивает секции с полюсами, наиболее близкими к единичной окружности, последними в каскаде. Можно указать функции ss2sos, чтобы она упорядочила секции в обратном порядке, используя аргумент order.
Функция ss2sos масштабирует секции по норме, указанной в аргументе 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.