tf2sos

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

Описание

пример

[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(___) встраивает полный коэффициент усиления системы в первый раздел.

Примеры

свернуть все

Создайте фильтр lowpass 4-го порядка Butterworth с помощью функции butter. Задайте частоту отсечения как половину частоты Найквиста. Реализуйте фильтр как секции второго порядка. Проверьте, что эти два представления идентичны, сравнивая их числители и знаменатели.

[nm,dn] = butter(4,0.5);
[ss,gn] = tf2sos(nm,dn);
numers = [conv(ss(1,1:3),ss(2,1:3))*gn;nm]
numers = 2×5

    0.0940    0.3759    0.5639    0.3759    0.0940
    0.0940    0.3759    0.5639    0.3759    0.0940

denoms = [conv(ss(1,4:6),ss(2,4:6));dn]
denoms = 2×5

    1.0000    0.0000    0.4860    0.0000    0.0177
    1.0000    0.0000    0.4860    0.0000    0.0177

Входные параметры

свернуть все

Коэффициенты передаточной функции, заданные как векторы. Выразите передаточную функцию с точки зрения b и a как

H(z)=B(z)A(z)=b1+b2z1++bn+1zna1+a2z1++am+1zm.

Пример: b = [1 3 3 1]/6 и a = [3 0 1 0]/3 задайте фильтр Баттерворта третьего порядка с нормализованной частотой 3 дБ 0.5, рад/выборка.

Типы данных: double

Порядок строк, заданный как один из следующих:

  • 'up' - Заказать разделы так, чтобы первая строка sos содержит наиболее удаленные от модуля круга полюсы.

  • 'down' - Заказать разделы так, чтобы первая строка sos содержит полюса, ближайшие к модулю кругу.

Типы данных: char

Масштабирование коэффициентов усиления и числителя, заданное как одно из следующего:

  • 'none' - Не применять масштабирование.

  • 'inf' - Применить норму по бесконечности.

  • 'two' - Применить 2-норма масштабирование.

Использование нормы по бесконечности с 'up'-упорядоченное расположение минимизирует вероятность переполнения в реализации. Использование 2-норма масштабирования с 'down'-упорядоченное расположение минимизирует пик округлого шума.

Примечание

Норма по бесконечности и 2-норма подходят только для реализаций II прямой формы.

Типы данных: char

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

свернуть все

Представление секции второго порядка, возвращенное как матрица. sos является матрицей L -by-6

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

строки которого содержат коэффициенты числителя и знаменателя < reservedrangesplaceholder3 > и < reservedrangesplaceholder2 > секций второго порядка H (z):

H(z)=gk=1LHk(z)=gk=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

Общее усиление системы, возвращаемое как действительный скаляр.

Если вы звоните tf2sos с одним выходным аргументом функция встраивает общий коэффициент усиления системы в первый раздел, H 1 (z), так что

H(z)=k=1LHk(z).

Примечание

Внедрение коэффициента усиления в первый раздел при масштабировании структуры II прямой формы не рекомендуется и может привести к изменению масштаба. Чтобы избежать встраивания усиления, используйте tf2sos с двумя выходами.

Алгоритмы

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

  1. Он находит полюса и нули системы, заданные b и a.

  2. Он использует функцию zp2sos, который сначала группирует нули и полюсы в комплексные сопряженные пары с помощью cplxpair функция. zp2sos затем формирует секции второго порядка путем согласования полюса и нулевых пар согласно следующим правилам:

    1. Соответствовать ближайшим к модулю кругу полюсам с нулями, ближайшими к этим полюсам.

    2. Соответствовать полюсам, ближайшим к модулю кругу, нулями, ближайшими к этим полюсам.

    3. Продолжайте, пока все полюсы и нули не будут совпадать.

    tf2sos группирует действительные полюса в секции с ближайшими к ним по абсолютному значению действительными полюсами. Это же правило применимо и к реальным нулям.

  3. Он упорядочивает секции согласно близости пар полюсов к модулю кругу. tf2sos обычно упорядочивает участки с полюсами, ближайшими к модулю кругу, последними в каскаде. Вы можете сказать tf2sos чтобы упорядочить разделы в обратном порядке путем определения order как 'down'.

  4. tf2sos масштабирует участки по норме, указанной в scale. Для произвольных H (ω) масштабирование определяется

    Hp=[12π02π|H(ω)|pdω]1/p

    где p может быть либо ∞, либо 2. Для получения дополнительной информации о масштабировании см. ссылки. Алгоритм следует этому масштабированию в попытке минимизировать переполнение или пик округлого шума в реализациях фильтра с фиксированной точкой.

Ссылки

[1] Джексон, Л. Б. Цифровые фильтры и обработка сигналов. 3-й ред. Бостон: Kluwer Academic Publishers, 1996.

[2] Митра, С. К. Цифровая обработка сигналов: компьютерный подход. Нью-Йорк: McGraw-Hill, 1998.

[3] Vaidyanathan, P. P. «Robust Digital Filter Structures». Справочник по цифровой обработке сигналов (С. К. Митра и Дж. Ф. Кайзер, эд.). Нью-Йорк: John Wiley & Sons, 1993.

См. также

| | | | | |

Представлено до R2006a