Системные модели дискретного времени являются представительными схемами цифровых фильтров. Техническая вычислительная среда MATLAB® поддерживает несколько системных моделей дискретного времени, которые описаны в следующих разделах:
transfer function является основным представлением Z-области цифрового фильтра, описывая фильтр как отношение двух полиномов. Это - основная модель дискретного времени для этого тулбокса. Описание модели передаточной функции для Z-преобразования разностного уравнения цифрового фильтра
Здесь, константы, b (i) и a (i) является коэффициентами фильтра и порядком фильтра, являются максимумом n и m. В среде MATLAB вы храните эти коэффициенты в двух векторах (векторы-строки условно), один вектор-строка для числителя и один для знаменателя. Дополнительную информацию см. в Фильтрах и Передаточных функциях на форме передаточной функции.
Форма учтенного или zero-pole-gain передаточной функции
Условно, полиномиальные коэффициенты хранятся в векторах-строках и полиномиальных корнях в вектор-столбцах. В форме нулей, полюсов и усиления, поэтому, нуль и местоположения полюса для числителя и знаменателя передаточной функции находятся в вектор-столбцах. Учтенное усиление передаточной функции k является скаляром MATLAB.
poly
и roots
функции преобразуют между представлениями нулей, полюсов и усиления и полиномом. Например, простой БИХ-фильтр
b = [2 3 4]; a = [1 3 3 1];
Нули и полюса этого фильтра
q = roots(b)
p = roots(a)
% Gain factor
k = b(1)/a(1)
Возврат исходным полиномам,
bb = k*poly(q) aa = poly(p)
Обратите внимание на то, что b
и a
в этом случае представляйте передаточную функцию:
Для b = [2 3 4]
, roots
функционируйте пропускает нуль для z, равного 0. На самом деле функция пропускает полюса и нули для z, равного 0 каждый раз, когда входная передаточная функция имеет больше полюсов, чем нули, или наоборот. Это приемлемо в большинстве случаев. Чтобы обойти проблему, однако, просто добавляют нули, чтобы сделать векторы той же длиной перед использованием roots
функция; например, b = [b 0]
.
Всегда возможно представлять цифровой фильтр или систему разностных уравнений, как набор разностных уравнений первого порядка. В матрице или форме state-space, можно записать уравнения как
где u
вход, x
вектор состояния и y
выход. Для одноканальных систем, A
m
- m
матрица, где m
порядок фильтра, B
вектор-столбец, C
вектор-строка и D
скаляр. Обозначение пространства состояний особенно удобно для многоканальных систем где вход u
и выход y
станьте векторами и B
C
, и D
станьте матрицами.
Представление пространства состояний расширяет легко к среде MATLAB. A
B
C
, и D
прямоугольные массивы; функции MATLAB обрабатывают их как отдельные переменные.
Взятие Z-преобразования уравнений пространства состояний и объединение их показывают эквивалентность форм передаточной функции и пространства состояний:
Не будьте заинтересованы, не ли вы знакомы с представлением пространства состояний линейных систем. Некоторые алгоритмы создания фильтра используют форму пространства состояний внутренне, но не требуют, чтобы любое знание концепций пространства состояний использовало их успешно. Если ваши приложения используют основанную на пространстве состояний обработку сигналов экстенсивно, однако, смотрите продукт Control System Toolbox™ для всесторонней библиотеки инструментов пространства состояний.
Каждая передаточная функция также имеет соответствующий partial fraction expansion или представление формы остатка, данное
если H (z) не имеет никаких повторных полюсов. Здесь, n является степенью полинома знаменателя рациональной передаточной функции b (z)/a (z). Если r является полюсом кратности sr, то H (z) имеет условия формы:
Signal Processing Toolbox™ residuez
функция в передаточных функциях преобразований к и от формы расширения элементарной дроби. “z
” на конце residuez
обозначает z-область или дискретную область. residuez
возвращает полюса в вектор-столбце p
, остатки, соответствующие полюсам в вектор-столбце r
, и любая неподходящая часть исходной передаточной функции подряд векторный k
. residuez
решает, что два полюса являются тем же самым, если величина их различия меньше, чем 0,1 процента любой из величин полюсов.
Расширение элементарной дроби возникает в обработке сигналов как один метод нахождения обратного Z-преобразования передаточной функции. Например, расширение элементарной дроби
b = [-4 8]; a = [1 6 8]; [r,p,k] = residuez(b,a)
который соответствует
Чтобы найти обратное Z-преобразование H (z), найдите сумму обратных Z-преобразований двух слагаемых H (z), дав причинную импульсную характеристику:
Чтобы проверить это в среде MATLAB, ввести
imp = [1 0 0 0 0];
resptf = filter(b,a,imp)
respres = filter(r(1),[1 -p(1)],imp)+...
filter(r(2),[1 -p(2)],imp)
Любая передаточная функция H (z) имеет представление second-order sections
где L является количеством секций второго порядка, которые описывают систему. Среда MATLAB представляет форму секции второго порядка системы дискретного времени как L-by-6 массив sos
. Каждая строка sos
содержит одну секцию второго порядка, где элементами строки являются три числителя и три коэффициента знаменателя, которые описывают секцию второго порядка.
Существует много способов представлять фильтр в форме секции второго порядка. Посредством тщательного соединения полюса и нулевых пар, упорядоченного расположения разделов в каскаде и мультипликативного масштабирования разделов, возможно уменьшать усиление шума квантования и избежать переполнения в некоторых реализациях фильтра фиксированной точки. Функции zp2sos
и ss2sos
, описанный в Преобразованиях Линейной системы, выполните нулевое полюсом соединение, масштабирование раздела и упорядоченное расположение раздела.
Примечание
Все преобразования секции второго порядка Signal Processing Toolbox применяются только к цифровым фильтрам.
Для дискретного все-полюса N-го порядка или все-нулевого фильтра, описанного полиномиальными коэффициентами (n), n = 1, 2 ..., N+1, существуют соответствующие коэффициенты структуры решетки N k (n), n = 1, 2 ..., N. Параметры k (n) также называются отражательными коэффициентами фильтра. Учитывая эти отражательные коэффициенты, можно реализовать дискретный фильтр как показано ниже.
КИХ и БИХ-схемы структуры Фильтра Решетки
Для общего нулевого полюсом БИХ-фильтра, описанного полиномиальными коэффициентами a и b, существует и коэффициенты решетки k (n) для знаменателя a и лестничные коэффициенты v (n) для числителя b. Фильтр решетки/лестничной структуры может быть реализован как
Схема фильтра решетки/лестничной структуры
Функция тулбокса tf2latc
принимает КИХ, или БИХ просачиваются, полином формируется, и возвращает соответствующие отражательные коэффициенты. КИХ в качестве примера просачивается, полиномиальная форма
b = [1.0000 0.6149 0.9899 0.0000 0.0031 -0.0082];
Решетка этого фильтра (отражательный коэффициент) представление
k = tf2latc(b)
Для БИХ-фильтров величина отражательных коэффициентов обеспечивает легкую проверку устойчивости. Если все отражательные коэффициенты, соответствующие полиному, имеют величину меньше чем 1, все корни того полинома в модульном кругу. Например, считайте БИХ-фильтр полиномом числителя b
сверху и полином знаменателя:
a = [1 1/2 1/3];
Представление решетки фильтра
[k,v] = tf2latc(b,a);
Поскольку abs(k)
< 1 для всех отражательных коэффициентов в
k
, фильтр устойчив.
Функция latc2tf
вычисляет полиномиальные коэффициенты для фильтра от его решетки (отражение) коэффициенты. Учитывая отражательный вектор коэффициентов k
, соответствующая полиномиальная форма
b = latc2tf(k);
Коэффициенты решетки или решетки/лестничной структуры могут использоваться, чтобы реализовать фильтр с помощью функционального latcfilt
.
В обработке сигналов, применяя операцию свертки к двум векторам или матрицам эквивалентно фильтрации одного из входных операндов другим. Это отношение разрешает представление цифрового фильтра как convolution matrix.
Учитывая любой вектор, функцию тулбокса convmtx
генерирует матрицу, скалярное произведение которой с другим вектором эквивалентно свертке этих двух векторов. Сгенерированная матрица представляет цифровой фильтр, что можно обратиться к любому вектору из соответствующей длины; внутренняя размерность операндов должна согласиться вычислить скалярное произведение.
Матрица свертки для векторного b
, представление коэффициентов числителя для цифрового фильтра,
b = [1 2 3]; x = randn(3,1); C = convmtx(b',3);
Два эквивалентных способа применить операцию свертки к b
с x
следующие.
y1 = C*x; y2 = conv(b,x);