Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

zp2sos

Convertir parámetros de filtro de ganancia de polo cero en secciones de segundo orden

Sintaxis

[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(...)

Descripción

convierte una representación de ganancia de polo cero de tiempo discreto de un filtro digital determinado en una representación de sección de segundo orden equivalente.zp2sos

[sos,g] = zp2sos(z,p,k) crea una matriz en forma de sección de segundo orden con ganancia equivalente al filtro de ganancia de polo cero de tiempo discreto representado por argumentos de entrada , , y .sosgzpk Vectores y contienen los ceros y polos de la función de transferencia del filtro ( ), no necesariamente en un orden particular.zpHz

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

donde y son las longitudes de y , respectivamente, y es una ganancia escalar.nmzpk Los ceros y los polos deben ser pares conjugados reales o complejos. es una matriz -by-6sosL

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

cuyas filas contienen los coeficientes numerador y denominador Bik Y Unik de las secciones de segundo orden de ( ).Hz

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

El número de filas de la matriz es el entero más cercano mayor o igual que el máximo de /2 y /2.Lsosnm

[sos,g] = zp2sos(z,p,k,'order') especifica el orden de las filas en , dondesos 'order' Es

  • , para ordenar las secciones de modo que la primera fila de contenga los polos más cercanos al círculo de la unidad'down'sos

  • , para ordenar las secciones de modo que la primera fila de contenga los polos más alejados del círculo de la unidad (predeterminado)'up'sos

[sos,g] = zp2sos(z,p,k,'order','scale') especifica la escala deseada de la ganancia y los coeficientes del numerador de todas las secciones de segundo orden, donde 'scale' Es

  • , para no aplicar ninguna escala (predeterminado)'none'

  • , para aplicar el escalado de normas infinitas'inf'

  • , para aplicar el escalado de 2 normas'two'

El uso del escalado de normas infinitas junto con el orden minimiza la probabilidad de desbordamiento en la realización.up El uso de escalado de 2 normas junto con el pedido minimiza el ruido de redondeo máximo.down

Nota

El escalado de normas infinitas y 2 normas solo es adecuado para implementaciones de forma directa II.

[sos,g] = zp2sos(z,p,k,'order','scale',zeroflag) especifica si mantener juntos ceros reales que son los negativos entre sí en lugar de ordenarlos de acuerdo con la proximidad a los polos. Establecer para mantener los ceros juntos y da como resultado un numerador con un coeficiente medio igual a cero.zeroflagtrue El valor predeterminado es .zeroflagfalse

sos = zp2sos(...) incrusta la ganancia general del sistema, , en la primera sección,gH1( ), de modo quez

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

Nota

No se recomienda incrustar la ganancia en la primera sección al escalar una estructura de forma directa II y puede dar lugar a una escala errática. Para evitar incrustar la ganancia, utilice con dos salidas.ss2sos

Ejemplos

contraer todo

Diseñe un filtro de paso bajo Butterworth de 5o orden utilizando la función con salida expresada en forma de ganancia de polo cero.butter Especifique la frecuencia de corte para que sea una quinta parte de la frecuencia Nyquist. Convierta el resultado en secciones de segundo orden. Visualice la respuesta de magnitud.

[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)

Algoritmos

utiliza un algoritmo de cuatro pasos para determinar la representación de sección de segundo orden para un sistema de ganancia de polo cero de entrada:zp2sos

  1. Agrupa los ceros y los polos en pares conjugados complejos utilizando la función.cplxpair

  2. Forma la sección de segundo orden haciendo coincidir los pares de polos y cero de acuerdo con las siguientes reglas:

    1. Coincide con los polos más cercanos al círculo de la unidad con los ceros más cercanos a esos polos.

    2. Coincide con los polos más cercanos al círculo de la unidad con los ceros más cercanos a esos polos.

    3. Continúe hasta que todos los polos y ceros coincidan.

    agrupa los polos reales en secciones con los polos reales más cercanos a ellos en valor absoluto.zp2sos La misma regla se mantiene para ceros reales.

  3. Ordena las secciones de acuerdo con la proximidad de los pares de polos al círculo de la unidad. normalmente ordena las secciones con polos más cercanos al círculo de la unidad último en la cascada.zp2sos Puede indicar que se ordenen las secciones en el orden inverso especificando la marca.zp2sosdown

  4. escala las secciones según la norma especificada en elzp2sos 'scale' Argumento. Para la arbitrariedad ( ), la escala se define medianteHω

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

    donde puede ser uno o 2.p Consulte las referencias para obtener más información sobre la escala. Esta escala es un intento de minimizar el desbordamiento o el ruido de redondeo máximo en implementaciones de filtro de punto fijo.

Referencias

[1] Jackson, L. B. Digital Filters and Signal Processing, 3rd Ed. Boston: Kluwer Academic Publishers, 1996, chap. 11.

[2] Mitra, S. K. Digital Signal Processing: A Computer-Based Approach. New York: McGraw-Hill, 1998, chap. 9.

[3] Vaidyanathan, P. P. “Robust Digital Filter Structures.” Handbook for Digital Signal Processing (S. K. Mitra and J. F. Kaiser, eds.). New York: John Wiley & Sons, 1993, chap. 7.

Consulte también

| | | | | |

Introducido antes de R2006a