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 эквивалентный фильтру нулей, полюсов и усиления дискретного времени представлен входными параметрами zP, и 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] Джексон, L. B. Цифровые фильтры и Обработка сигналов, 3-й Эд. Бостон: Kluwer Академические Издатели, 1996, парень. 11.

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

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

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

| | | | | |

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