Ich möchte eine Verzögerung über die Pad-Approximation approximieren. Ich stelle eine normale Verzögerung über den Exponentialterm ein und ich stelle eine Verzögerung über die Pade-Annäherung ein und schaue mir den Unterschied zwischen den beiden mit einem Bode-Plot und einer Sprungantwort an. Das ist ganz anders ... Das ist also keine Annäherung ... Wo liegt mein Fehler ?
Einen schönen Tag noch :)
Ihre Sprungantwort scheint zu wenige Integrationspunkte zu enthalten. Die Verzögerung beträgt 2 us, während die Abtastung der Sprungantwort 10 ms zu sein scheint. Matlab/Octave sollte idealerweise die richtige Schrittweite für die Integration erraten. In diesem Fall nicht.
Der folgende Code sollte Matlab darauf hinweisen, dass eine kleine Integrationsschrittgröße verwendet werden sollte.
step(sys_retard, 10e-6);
hold on;
step(sys_retard_pade, 10e-6);
Die Skala im Phasendiagramm beträgt 5760 Grad. Deaktivieren Sie die unwrap phase
in den Optionen des Bode-Plots. Matlab wickelt dann die Phase beider Systeme in den Bereich von -180 bis +180 Grad ein. Der Phasengang stimmt mit dieser Einstellung überein (für niedrige Frequenzen, bei denen die Pad-Näherung gültig ist).
Es gibt keinen anderen Fehler als vielleicht unterschiedliche Erwartungen. Die Padé-Näherung ist genau das: eine Annäherung, daher ist sie im Vergleich zur "echten Sache" begrenzt. Das Wichtigste, woran man sich erinnern sollte, ist das hat unendlich viele Wurzeln, und die Annäherung kann dies nur durch eine endliche Menge von Wurzeln annähern. Wie viele? Wie viele Sie sich auch leisten können. Aber das bedeutet, dass, egal wie viele Wurzeln Sie entbehren können, es immer eine Begrenzung der abgedeckten Bandbreite geben wird, nicht in Bezug auf die Größe – das wird ein Allpass sein – sondern in Bezug auf die Gruppenverzögerung.
Vielleicht hilft es, die Padé-Näherung nicht als Padé-Reihe zu betrachten, sondern als verkappten Bessel-Allpass. Beginnen Sie mit dem Prototyp-Tiefpass und wandeln Sie ihn in einen Allpass um:
Der Tiefpass-Prototyp wird eine Gruppenverzögerung von 1 s haben, und durch die Umwandlung in einen Allpass wird sie doppelt so groß, also 2 s. Die Konstruktion der Padé-Näherung für eine 2. Ordnung mit 2 s Verzögerung ergibt:
[a,b]=padecoeff(2,2)
a =
4 -12 12
b =
4 12 12
Und wenn Sie den Nenner normalisieren, bedeutet dies, alles durch 4 zu teilen, was zu (1) führt.
.AC
, als .TRAN
.
AJN
AJN
step(sys_retard, 10e-6); hold on; step(sys_retard_pade, 10e-6);
und aktualisieren Sie die Frage bitte mit diesem überarbeiteten Plotcode.Jess
Jess
AJN
end time
von 10e-6 weist Matlab darauf hin, dass eine kleine Schrittgröße verwendet werden muss. Geben Sie alternativ alle Zeitschritte an, und Matlab verwendet diese als Schrittgröße. zBstep(system, [0 : 1e-7 : 1e-5])
.AJN
Jess