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.

invfreqs

Identifique los parámetros de filtro de tiempo continuo de los datos de respuesta de frecuencia

Sintaxis

[b,a] = invfreqs(h,w,n,m)
[b,a] = invfreqs(h,w,n,m,wt)
[b,a] = invfreqs(h,w,n,m,wt,iter)
[b,a] = invfreqs(h,w,n,m,wt,iter,tol)
[b,a] = invfreqs(h,w,n,m,wt,iter,tol,'trace')
[b,a] = invfreqs(h,w,'complex',n,m,...)

Descripción

es elinvfreqs operación inversa de.freqs Encuentra una función de transferencia de tiempo continuo que corresponde a una respuesta de frecuencia compleja dada. Desde un punto de vista de análisis de laboratorio, es útil convertir datos de magnitud y fase en funciones de transferencia.invfreqs

[b,a] = invfreqs(h,w,n,m) Devuelve los vectores de coeficiente de numerador y denominador reales y de la función de transferenciaba

H(s)=B(s)A(s)=b(1)sn+b(2)sn1++b(n+1)a(1)sm+a(2)sm1++a(m+1)

cuya respuesta de frecuencia compleja se da en Vector en los puntos de frecuencia especificados en Vector.hw Escalares y especificar las órdenes deseadas de los polinomios numerador y denominador.nm

La longitud de debe ser la misma que la longitud de. utiliza para asegurar la simetría del dominio de frecuencia adecuada para un filtro real.hwinvfreqsconj(h)-w

[b,a] = invfreqs(h,w,n,m,wt) pesa los errores de ajuste en comparación con la frecuencia, donde es un vector de los factores de ponderación de la misma longitud que.wtw

[b,a] = invfreqs(h,w,n,m,wt,iter) Y

[b,a] = invfreqs(h,w,n,m,wt,iter,tol) proporcionan un algoritmo superior que garantiza la estabilidad del sistema lineal resultante y busca el mejor ajuste mediante un esquema iterativo y numérico. El parámetro indica que finaliza la iteración cuando la solución ha convergido o después de las iteraciones, lo que ocurra primero. define la convergencia como ocurre cuando la norma del vector de degradado (modificado) es menor que, donde es un parámetro opcional que por defecto es 0,01.iterinvfreqsiterinvfreqstoltol Para obtener un vector de peso de todos los, utilice

invfreqs(h,w,n,m,[],iter,tol) 

[b,a] = invfreqs(h,w,n,m,wt,iter,tol,'trace') muestra un informe de progreso textual de la iteración.

[b,a] = invfreqs(h,w,'complex',n,m,...) crea un filtro complejo. En este caso no se aplica ninguna simetría y la frecuencia se especifica en radianes entre y.–ππ

Ejemplos

contraer todo

Convierta una función de transferencia simple en datos de respuesta de frecuencia y, a continuación, vuelva a los coeficientes de filtro originales.

a = [1 2 3 2 1 4]; b = [1 2 3 2 3];  [h,w] = freqs(b,a,64); [bb,aa] = invfreqs(h,w,4,5)
bb = 1×5

    1.0000    2.0000    3.0000    2.0000    3.0000

aa = 1×6

    1.0000    2.0000    3.0000    2.0000    1.0000    4.0000

y son equivalentes a y, respectivamente.bbaaba Sin embargo, el sistema es inestable porque tiene polos con parte real positiva.aa Ver los polos de y.bbaa

zplane(bb,aa)

Utilice el algoritmo iterativo de para encontrar una aproximación estable al sistema.invfreqs

[bbb,aaa] = invfreqs(h,w,4,5,[],30)
bbb = 1×5

    0.6816    2.1015    2.6694    0.9113   -0.1218

aaa = 1×6

    1.0000    3.4676    7.4060    6.2102    2.5413    0.0001

Verifique que el sistema sea estable trazando los polos nuevos.

zplane(bbb,aaa)

Genere dos vectores y, que simulen la magnitud y los datos de fase recopilados en un laboratorio.magphase También generar un vector,, de frecuencias.w

rng('default')  fs = 1000; t = 0:1/fs:2; mag = periodogram(sin(2*pi*100*t)+randn(size(t))/10,[],[],fs); phase = randn(size(mag))/10; w = linspace(0,fs/2,length(mag))';

Se utiliza para convertir los datos en una función de transferencia de tiempo continuo.invfreqs Graficar el resultado.

[b,a] = invfreqs(mag.*exp(1j*phase),w,2,2,[],4);  freqs(b,a)

Sugerencias

Al construir modelos de orden superior utilizando frecuencias altas, es importante escalar las frecuencias, dividiendo por un factor como la mitad de la frecuencia más alta presente, para obtener valores bien condicionados de y.wab Esto corresponde a un reescalado del tiempo.

Algoritmos

De forma predeterminada, utiliza un método de error de ecuación para identificar el mejor modelo a partir de los datos.invfreqs Esto encuentra y enba

minb,ak=1nwt(k)|h(k)A(w(k))B(w(k))|2

creando un sistema de ecuaciones lineales y resolviéndolos con el operador.MATLAB®\ Aquí (()) y (()) son las transformaciones de Fourier de los polinomios y, respectivamente, en la frecuencia (), y es el número de puntos de frecuencia (la longitud de y).AwkBwkabwknhw Este algoritmo se basa en Levi.[1] Se han sugerido varias variantes en la bibliografía, donde la función de ponderación da menos atención a las frecuencias altas.wt

El algoritmo superior ("Output-Error") utiliza el amortiguada Método Gauss-Newton para búsqueda iterativa, con la salida del primer algoritmo como la estimación inicial.[2] Esto resuelve el problema directo de minimizar la suma ponderada del error cuadrado entre los puntos de respuesta de frecuencia reales y deseados.

minb,ak=1nwt(k)|h(k)B(w(k))A(w(k))|2

Referencias

[1] Levi, E. C. “Complex-Curve Fitting.” IRE Trans. on Automatic Control. Vol. AC-4, 1959, pp. 37–44.

[2] Dennis, J. E., Jr., and R. B. Schnabel. Numerical Methods for Unconstrained Optimization and Nonlinear Equations.Englewood Cliffs, NJ: Prentice-Hall, 1983.

Consulte también

| | |

Introducido antes de R2006a