Main Content

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.

stmcb

Calcular modelo lineal utilizando la iteración Steiglitz-McBride

Sintaxis

[b,a] = stmcb(h,nb,na)
[b,a] = stmcb(y,x,nb,na)
[b,a] = stmcb(h,nb,na,niter)
[b,a] = stmcb(y,x,nb,na,niter)
[b,a] = stmcb(h,nb,na,niter,ai)
[b,a] = stmcb(y,x,nb,na,niter,ai)

Descripción

Iteración Steiglitz-McBride es un algoritmo para encontrar una Filtro IIR con una respuesta de impulso de dominio de tiempo prescrita. Tiene aplicaciones tanto en el diseño de filtros como en la identificación del sistema (modelado paramétrico).

[b,a] = stmcb(h,nb,na) encuentra los coeficientes y del sistema ( )/ ( ) con respuesta de impulso aproximado, exactamente ceros, y exactamente polos.babzazhnbna

[b,a] = stmcb(y,x,nb,na) encuentra los coeficientes del sistema y del sistema que, dado como entrada, tiene como salida. y debe tener la misma longitud.baxyxy

[b,a] = stmcb(h,nb,na,niter) Y

[b,a] = stmcb(y,x,nb,na,niter) utilizar iteraciones.niter El valor predeterminado es 5.niter

[b,a] = stmcb(h,nb,na,niter,ai) Y

[b,a] = stmcb(y,x,nb,na,niter,ai) utilizar el vector como estimación inicial de los coeficientes denominadores.ai Si no se especifica, utiliza el argumento de salida de como vector .aistmcb[b,ai] = prony(h,0,na)ai

devuelve los coeficientes de filtro IIR en vectores de longitud y fila y .stmcbnb+1na+1ba Los coeficientes de filtro se ordenan en poderes descendentes de .z

H(z)=B(z)A(z)=b(1)+b(2)z1++b(nb+1)znba(1)+a(2)z1++a(na+1)zna

Ejemplos

contraer todo

Aproximadamente la respuesta de impulso de un filtro IIR con un sistema de orden inferior.

Especifique un filtro Butterworth de 6o orden con frecuencia normalizada de 3 dB

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra.

d = designfilt('lowpassiir','FilterOrder',6, ...     'HalfPowerFrequency',0.2,'DesignMethod','butter');

Utilice la iteración Steiglitz-McBride para aproximar el filtro con un sistema de 4o orden.

h = impz(d); [bb,aa] = stmcb(h,4,4);

Trazar las respuestas de frecuencia de los dos sistemas.

hfvt = fvtool(d,bb,aa,'Analysis','freq'); legend(hfvt,'Butterworth','Steiglitz-McBride')

Diagnóstico

Si y tiene diferentes longitudes, produce este mensaje de error:xystmcb

La señal de entrada X y la señal de salida Y deben tener la misma longitud. 

Algoritmos

intenta minimizar el error al cuadrado entre la respuesta de impulso de ( ) ( ) y la señal de entrada .stmcbhbz/azx

mina,bi=0|x(i)h(i)|2

itera utilizando dos pasos:stmcb

  1. Prefiltra y usa 1/ ( ).hxaz

  2. Resuelve un sistema de ecuaciones lineales para y usando .ba

repite los tiempos de este proceso.stmcbniter No se realiza ninguna comprobación para ver si los coeficientes y han convergedo en menos de iteraciones.baniter

Referencias

[1] Steiglitz, K., and L. E. McBride. “A Technique for the Identification of Linear Systems.” IEEE® Transactions on Automatic Control. Vol. AC-10, 1965, pp. 461–464.

[2] Ljung, Lennart. System Identification: Theory for the User. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 1999, p. 354.

Consulte también

| | |

Introducido antes de R2006a