Me gustaría aproximar un retraso a través de la aproximación de pade. Establecí un retraso normal a través del término exponencial y establecí un retraso a través de la aproximación de pade y observo la diferencia entre ambos con un diagrama de Bode y una respuesta de paso. Esto es totalmente diferente... Así que esto no es una aproximación... ¿Dónde está mi error?
Que tenga un lindo día :)
Parece que hay muy pocos puntos de integración en su respuesta al paso. El retraso es de 2 us mientras que el muestreo de la respuesta de paso parece ser de 10 ms. Idealmente, Matlab/Octave debería adivinar el tamaño de paso correcto para la integración. En este caso no lo hace.
El siguiente código debe indicar a matlab que se debe usar un tamaño de paso de integración pequeño.
step(sys_retard, 10e-6);
hold on;
step(sys_retard_pade, 10e-6);
La escala en el diagrama de fase es de 5760 grados. Desmarque en las unwrap phase
opciones del diagrama de Bode. Matlab luego ajustará la fase de ambos sistemas al rango de -180 a +180 grados. La respuesta de fase coincidirá con esa configuración (para frecuencias bajas donde la aproximación de pade es válida).
No hay otro error que tal vez diferentes expectativas. La aproximación de Padé es solo eso: una aproximación, por lo tanto, es limitada en comparación con la "cosa real". La clave para recordar es que tiene una infinidad de raíces, y la aproximación solo puede... aproximar eso a través de un conjunto finito de raíces. ¿Cuántos? Sin embargo, muchos que puede pagar. Pero eso significará que no importa cuántas raíces pueda prescindir, siempre habrá una limitación del ancho de banda cubierto, no en términos de magnitud, que será un paso total, sino en términos de retraso de grupo.
Tal vez ayude considerar la aproximación de Padé no como una serie de Padé, sino como un Bessel allpass disfrazado. Comience con el prototipo de paso bajo y conviértalo en un paso total:
El prototipo de paso bajo tendrá un retraso de grupo de 1 s, y al convertirlo en un paso total será el doble, por lo tanto, 2 s. La construcción de la aproximación de Padé para un segundo orden con un retraso de 2 s dará como resultado:
[a,b]=padecoeff(2,2)
a =
4 -12 12
b =
4 12 12
Y si normalizas el denominador significará dividir todo por 4, resultando en (1).
.AC
, que en .TRAN
.
AJN
AJN
step(sys_retard, 10e-6); hold on; step(sys_retard_pade, 10e-6);
y actualice la pregunta con este código de trazado revisado.Cadena
Cadena
AJN
end time
de 10e-6 le indicará a matlab que se debe usar un tamaño de paso pequeño. Alternativamente, dé todos los pasos de tiempo y matlab lo usará como tamaño de paso; ejstep(system, [0 : 1e-7 : 1e-5])
.AJN
Cadena