Ich habe hier diese kontinuierliche Übertragungsfunktion:
Y( s )U( s )=s + 3S3+ 12S2+ 39 Sek. + 28
Übergeben Sie dieses tf wie folgt an eine diskrete Domain:
T = 0.01;
sys_discrete = c2d(sys, T);
Ich schaff das:
Y( z)U( z)=4.853.10− 5z2+1.57.10− 11z−4.57.10− 5z3− 2,883z2+ 2,77 z− 0,8869
In Anbetracht dessen:
Y( z)U( z)=A0z2+A1z+A2B0z3+B1z2+B2z+B3
und bei der inversen Z-Transformation habe ich Folgendes erhalten:
j( k ) =A0B3u ( k − 2 ) +A1B3u ( k − 1 ) +A2B3u ( k ) −B0B3j( k − 3 ) −B1B3j( k − 2 )−B2B3j( k - 1 )j( k ) = [u ( k − 2 )u ( k − 1 )du ( k )j( k - 3 )j( k − 2 )j( k - 1 )] .⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢A0/B3A1/B3A2/B3−B0/B3−B1/B3−B2/B3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥
Umbenennung dieser Typen:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢A0/B3A1/B3A2/B3−B0/B3−B1/B3−B2/B3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢C1C2C3C4C5C6⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
Wenn ich also diesen C-Vektor finde, gehe ich auf diese Weise zurück (nur zurück ersetzen):
Y( z)U( z)=C1z2+C2z+C3−C4z3−C5z2−C6z+ 1
Ich versuche also, C zu finden:
Y= A. _ CAT. Y=AT. A. _ C(AT. A)− 1. (AT. Y) = (AT. A)− 1. (AT. A ) . C(AT. A)− 1. (AT. Y) = Ich. C(AT. A)− 1. (AT. Y) = C
So mache ich das bei MATLAB:
t = 0:T:10;
u = wgn(length(t), 1, 1);
[y, t] = lsim(sys, u, t);
A = [u(2:end-2) u(3:end-1) u(4:end) y(1:end-3) y(2:end-2) y(3:end-1)];
Y = y(4:end);
C=(A'*A)\(A'*Y);
c1 = C(1); c2 = C(2); c3 = C(3);
c4 = C(4); c5 = C(5); c6 = C(6);
sys_ls = tf([c1 c2 c3], [-c4 -c5 -c6 1], T);
Wenn ich step(sys, sys_ls)
, bekomme ich das:
Ich hatte gehofft, etwas sehr, sehr Ähnliches zu finden ... Was fehlt mir, um dieses System richtig anzupassen?
Andi aka
João Paulo
Chu
João Paulo
João Paulo
Chu
João Paulo
Chu
João Paulo
Chu
João Paulo