Hallo zusammen
Ich versuche gerade den Amplitudenrand und die Phasenreserve selbst zu berechnen und versuche dies mit dem Bodeplot aus Matlab zu vergleichen.
Dies habe ich getan und dies funktioniert auch soweit, jedoch erhalte ich bei der Berechnung nicht direkt die Phasenverschiebung, sondern eigentlich den Phasenrand direkt, was ja schon komisch ist. Ich müsste doch erst die Phasenverschiebung erhalten und den Phasenrand dann mit folgender Formel berechnen.
Phasenrand = 180 - Phasenverschiebung
Wieso erhalte ich nicht erst die Phasenverschiebung? Was mache ich im folgenden Code verkehrt? Ich wäre euch für einen kurzen Input sehr dankbar.
Werte für w=105 Phasenverschiebung = 4.8947 Phasenverschiebung_b = 4.8947 Phasenrand = 175.1053 Phasenrand_b = 175.1053
w=10.2 Phasenverschiebung = 38.8334 Phasenverschiebung_b = 38.8334 Phasenrand = 141.1666 Phasenrand_b = 141.1666
Code: clear all clc
zo=[1 1]; % Zählerpolynom 1s + 2 als Zeilenvektor no=[0.1 1 0 0]; % Nennerpolynom 1s^2 + 2*s + 1 als Zeilenvektor Go1=tf(zo,no) % Definition der Übertragungsfunktion Gw= Go1/(1+Go1)
w=105; zaehler = 1+jw nenner1 = 0.1(jw)^3 nenner2 = (jw)^2 Go= zaehler / (nenner1 + nenner2) re=-(1+0.1w^2)/(w^2+0.1^2w^3) im=-0.9w/(w^2+0.1^2w^3) realt=real(Go) ima=imag(Go)
betrag = sqrt(1+w^2)/sqrt(w^4 * (1+(0.1*w)^2)); AR=1/betrag AR=mag2db(AR) Phasenverschiebung=atan(im/re)*180/pi Phasenverschiebung_b=atan(ima/realt)*180/pi
Phasenrand=180-Phasenverschiebung Phasenrand_b=180-Phasenverschiebung_b
bode(Go1) % legend('open loop', 'closed loop') % pzmap(Gw); % grid on
