WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

eig function vertauscht eigenwerte

 

Astropeter
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 16.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2019, 15:03     Titel: eig function vertauscht eigenwerte
  Antworten mit Zitat      
Hallo,
ich berechne in simulink einen stetig veränderlichen trägheitstensor.
diesen gebe ich in einen Matlab function block, der nur eine einzige zeile beinhaltet:
Code:

[v, Inertia_New] = eig(Inertia,'vector');
 

Damit die Eigenwerte und Eigenvektoren berechnet werden.
(habe keinen simulink block gefunden der das kann)
funktioniert so auch, nur beim ergebnis, siehe bild, werden bei für mich zufälligen zeitpunkten einfach 2 der eigenwerte vertauscht.
hat jemand eine Idee woran das liegen könnte?
Gruß, Astropeter

scope.PNG
 Beschreibung:

Download
 Dateiname:  scope.PNG
 Dateigröße:  49.21 KB
 Heruntergeladen:  216 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.02.2019, 15:17     Titel:
  Antworten mit Zitat      
Hallo,

in der Dokumentation von eig steht nirgends, dass die Eigenwerte in einer bestimmten Sortierung zurückgegeben werden, also würde ich das auch nicht erwarten.

Die einfachste Lösung dürfte sein, v anschließend selbst zu sortieren ( sort ).

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Astropeter
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 16.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2019, 15:39     Titel:
  Antworten mit Zitat      
Hallo,
Das Problem ist nicht die Reihenfolge von v.
Ich hätte vielleicht noch erwähnen sollen, dass auf dem bild die Einträge von Inertia_New über der Simulationszeit geplottet sind.
Ich kann vorher gar nicht wissen, wo die Werte vertauscht werden, das ist von der bewegung abhängig, die ich simuliere.
edit: bild angehängt

scope2.PNG
 Beschreibung:

Download
 Dateiname:  scope2.PNG
 Dateigröße:  48.11 KB
 Heruntergeladen:  206 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.02.2019, 15:57     Titel:
  Antworten mit Zitat      
Hallo,

es geht dir ja darum, die Sprünge im Plot zu vermeiden? Das erreichst du, indem du die Eigenwerte immer sortierst (wenn sie schon sortiert sind, schadet das ja nicht).

Dazu brauchst du auch gar nicht zu wissen, wo die Eigenwerte vertauscht werden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Astropeter
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 16.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2019, 16:08     Titel:
  Antworten mit Zitat      
Okay also ich habe jetzt direkt nach dem eig Aufruf einfach sort(Inertia_New) geschrieben. Es hat sich nichts verändert, der plot sieht genauso aus.
Oder meintest du das noch anders?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.02.2019, 16:50     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte nicht sorgfältig genug gelesen und dachte, dass es um das erste Rückgabeargument geht.
Wenn es um das zweite Rückgabeargument, also die zugehörigen Eigenvektoren geht: dann muss man die Eigenwerte sortieren und die Sortierreihenfolge auf die Matrix der Eigenvektoren anwenden.
Falls möglich, bitte mal das Simulink-Modell anhängen, dann kann man sich das direkt ansehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.