Verfasst am: 20.03.2008, 20:58
Titel: Fehler in connect (Control System Toolbox)?
Hallo!
Wenn ich das Beispiel aus der MATLAB Hilfe zum Befehl "connect" aus der Control System Toolbox ausführe, dann bekomme ich ein anderes Ergebnis als auf der Hilfeseite angegeben. Alles nur per Copy&Paste, zweimal überprüft, ob alles richtig kopiert wurde.
Ich verwende Matlab 7.1 R14 SP3, falls das irgendwie relevant ist.
Ich geb hier einfach mal das M-File an, könnt' ihr das mal durchlaufen lassen und das Ergebnis vergleichen?
Code:
% Beispiel-Code aus der Hilfeseite zu connect, Matlab 7.1 R14 SP3
A = [-9.020117.7791 -1.69433.2138];
B = [ -.5112 .5362
-.002-1.8470];
C = [-3.28972.4544 -13.500918.0745];
D = [-.5476 -.1410
-.6459 .2958];
Und jetzt die Ausgabe, die in der Hilfe angezeigt wird. Zu beachten ist, dass dort die Werte in Abhängigkeit der Zustandsvariable x4 abweichen, alle anderen sind gleich, abgesehen von Rundungsungenauigkeiten:
Code:
% Ergebnis aus der Hilfe
a =
x1 x2 x3 x4
x1 -5000
x2 0.842230.0766365.60070.47644
x3 -2.9012-33.02945.164-1.6411
x4 0.65708-11.99616.06-1.6283
Was ist da los? Wie kann es zu diesen Abweichungen kommen? Ich hab die connect-Funktion übrigens auch in Maple nachgebaut, weil ich symboliche Werte benötige. Das Komische daran ist, dass die Maple-Ausgabe mit den Werte aus der Hilfeseite übereinstimmen! D.h. wenn ich bei der Umsetzung in Maple keine Fehler gemacht habe, dann ist die Matlab-Berechnung falsch. Oder kann es sein, dass falsche Einstellungen die Rechenweise ändern? Ich allerdings bei Matlab nach der Installation nichts verändert.
Das die Funktion connect falsch rechnet, kommt mir allerdings auch unwahrscheinlich vor, dass hätte ja jem. merken müssen. Wo ist hier also der Haken an der Sache?
So, ich hab den Fehler an einer Stelle gefunden, die ich nicht vermutet habe
Wenn man das M-File nach sys = append(sys1,sys2,sys3) abbricht, dann merkt man, dass das berechnete System nicht dem in der Hilfe angegebenen (Zwischen-)System gleicht! In der Hilfe sind zwei Einträge mit +/-1.4142 in der Matrix, die eigentlich 2/-1 sein müssten.
Die Hilfeseite rechnet den connect-Befehl nun aber mit dem falschen(!) Zwischenergebnis weiter. Dadurch kommt es zu den Unterschieden. Meiner Maple-Funktion hab ich nun auch nur das falsche Zwischenergebnis zugeführt, da ich nur den connect-Befehl umgesetzt hatte und nicht den append-Befehl.
Fazit: connect rechnet natürlich richtig, sowohl bei Matlab als auch bei meiner Maple-Variante. Bei der Hilfeseite wird ein falsches Zwischenergebnis berechnet (warum auch immer). Dieses Zwischnergebnis wird in connect eingesetzt und richtig berechnet. Jedoch hat das nichts mehr mit dem Ausgangssystem zu tun, das mit append zusammengefügt wurde. Ende gut alles gut. Zwei Tage in den Sand gesetzt für diesen blöden Fehler in der Hilfe.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.