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

Calcule el 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

La iteración de Steiglitz-McBride es un algoritmo para encontrar un Filtro IIR con una respuesta de impulso de dominio de tiempo prescrito. Tiene aplicaciones tanto en el diseño del filtro 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 aproximada, exactamente ceros, y exactamente postes.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) Usar 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 la estimación inicial de los coeficientes del denominador.ai Si no se especifica, utiliza el argumento de salida como vector.aistmcb[b,ai] = prony(h,0,na)ai

Devuelve los coeficientes del filtro IIR en los vectores de longitud y fila y.stmcbnb+1na+1ba Los coeficientes del filtro se ordenan en potencias 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

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

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

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

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

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

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 diversas 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 cuadrado entre la respuesta de impulso de () () y la señal de entrada.stmcbhbz/azx

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

IULA mediante dos pasos:stmcb

  1. Se prefiltra y utiliza 1/().hxaz

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

repite estos tiempos de proceso.stmcbniter No se realiza ninguna comprobación para ver si los coeficientes y han convergido 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