zp2sos

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

Синтаксис

[sos,g] = zp2sos(z,p,k)
[sos,g] = zp2sos(z,p,k,'order')
[sos,g] = zp2sos(z,p,k,'order','scale')
[sos,g] = zp2sos(z,p,k,'order','scale',zeroflag)
sos = zp2sos(...)

Описание

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

[sos,g] = zp2sos(z,p,k) создает матричный sos в форме раздела второго порядка с усилением g, эквивалентный фильтру нулей и полюсов дискретного времени, представленному входными параметрами z, p и k. Векторы z и p содержат нули и полюса передаточной функции фильтра H (z), не обязательно в каком-то конкретном порядке.

H(z)=k(zz1)(zz2)(zzn)(zp1)(zp2)(zpm)

где n и m являются длинами z и p, соответственно, и k является скалярным усилением. Нули и полюса должны быть действительными или комплексно-сопряженными парами. sos является L-by-6 матрица

SOS=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

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

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

Номер L строк матричного sos является самым близким целым числом, больше, чем или равный максимуму n/2 и m/2.

[sos,g] = zp2sos(z,p,k,'order') задает порядок строк в sos, где 'order'

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

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

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

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

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

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

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

Примечание

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

[sos,g] = zp2sos(z,p,k,'order','scale',zeroflag) задает, держать ли вместе действительные нули, которые являются отрицательными сторонами друг друга вместо того, чтобы заказать им согласно близости к полюсам. Установка zeroflag к true держит нули вместе и приводит к числителю со средним равным нулю коэффициентом. Значением по умолчанию для zeroflag является false.

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

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

Примечание

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

Примеры

свернуть все

Разработайте 5-й порядок Баттерворт lowpass фильтр с помощью функционального butter с выводом, выраженным в форме нулей и полюсов. Задайте частоту среза, чтобы быть одной пятой частоты Найквиста. Преобразуйте результат в разделы второго порядка. Визуализируйте ответ значения.

[z,p,k] = butter(5,0.2);
sos = zp2sos(z,p,k)
sos = 3×6

    0.0013    0.0013         0    1.0000   -0.5095         0
    1.0000    2.0000    1.0000    1.0000   -1.0966    0.3554
    1.0000    2.0000    1.0000    1.0000   -1.3693    0.6926

fvtool(sos)

Алгоритмы

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

  1. Это группирует нули и полюса в комплексно-сопряженные пары с помощью функции cplxpair.

  2. Это формирует раздел второго порядка путем соответствия с полюсом и нулевыми парами согласно следующим правилам:

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

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

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

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

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

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

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

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

Ссылки

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

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

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

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

| | | | | |

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