tf2sos

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

Синтаксис

[sos,g] = tf2sos(b,a)
[sos,g] = tf2sos(b,a,'order')
[sos,g] = tf2sos(b,a,'order','scale')
sos = tf2sos(...)

Описание

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

[sos,g] = tf2sos(b,a) находит матричный sos в секции второго порядка формируют с усилением g это эквивалентно цифровому фильтру, представленному, переводом функционируют векторы коэффициентов a и b.

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

sos L-by-6 матрица

SOS=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L].

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

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

[sos,g] = tf2sos(b,a,'order') задает порядок строк в sos, где 'order'

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

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

[sos,g] = tf2sos(b,a,'order','scale') задает желаемое масштабирование усиления и коэффициенты числителя всех секций второго порядка, где 'scale' :

  • 'none', не применять масштабирование (значение по умолчанию)

  • 'inf', применять масштабирование нормы по бесконечности

  • 'two', применять масштабирование 2-нормы

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

Примечание

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

sos = tf2sos(...) встраивает полное системное усиление, g, в первом разделе, H1 (z), так, чтобы

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

Примечание

При встраивании усиления в первый раздел при масштабировании прямой формы II структур не рекомендуются и могут привести к ошибочному масштабированию. Чтобы постараться не встраивать усиление, используйте ss2sos с двумя выходными параметрами.

Примеры

свернуть все

Спроектируйте 4-й порядок Баттерворта фильтр lowpass с помощью функционального 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

Алгоритмы

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

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

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

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

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

    3. Продолжите, пока все полюса и нули не являются соответствующими.

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

  3. Это заказывает разделы согласно близости пар полюса к модульному кругу. tf2sos обычно заказывает разделы с полюсами, самыми близкими к модульному кругу в последний раз в каскаде. Можно сказать tf2sos заказать разделы в обратном порядке путем определения 'down' флаг.

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

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

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

Ссылки

[1] Джексон, L. B. Цифровые фильтры и Обработка сигналов. 3-й редактор Бостон: Kluwer Академические Издатели, 1996, парень. 11.

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

[3] Vaidyanathan, P. P. “Устойчивые Структуры Цифрового фильтра”. Руководство для Цифровой обработки сигналов (С. К. Митра и Дж. Ф. Кэйсер, редакторы). Нью-Йорк: John Wiley & Sons, 1993, парень. 7.

Смотрите также

| | | | | |

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