|
|
Problem mit sprintf und for Schleifen |
|
Joe777 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 11.08.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.08.2017, 18:09
Titel: Problem mit sprintf und for Schleifen
|
|
|
|
|
Hallo an alle.
Ich hab das Problem, dass ich die Matritze "Simulationsergebnisse" in der Darstellung der Zahlen so verändern will das beispielsweise die Zahl "5.502409192314113e+03" aus der besagten Matrize als 5502.409 dargestellt wird, damit die Ergebnisse in einer GUI Tabelle besser präsentiert werden können. Die Ordnung der Matrize an sich sollte nicht verändert werden. Nun hab ich mir folgende Lösung überlegt:
Ziel des Codes ist es eine Zahl aus der Matrix "Simulationsergebnisse" in die Matrix "Data" an die selbe Zeile/Spalte zu überführen und natürlich die Zahlendarstellung zu ändern.
Beim durchlaufen kommt folgender Fehler:
Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Error in Matlab_Simulink (line 84)
Data(i,k) = sprintf('%.3f',Simulationsergebnisse(i,k));
Nun verstehe ich nicht genau was das Problem ist.
Wenn ich das in eine Variable Data ohne Indizierung speicher sprich "Data =sprintf('%.3f',Simulationsergebnisse(i,k));" läuft die Zählschleife durch nur bleibt am Ende natürlich nur der letzte Wert der ausgangs Matrix.
Nun bin ich auch kein Matlab Profi, vielleicht kennt ja jemand auch eleganter bzw. besser Lösungen?
Danke schonmal für Antworten
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 12.08.2017, 00:40
Titel: Re: Problem mit sprintf und for Schleifen
|
|
|
|
|
Hallo Joe777,
Nur als Bemerkung: Deine Frage lässt sich in einer Minute lesen. Du hast ziemlich genau beschrieben, was Du erreichen möchtest und Dich auf das Wesentliche konzentriert. Den Code zu posten und die vollständige Fehlermeldung ist auch hilfreich. Gut gefragt!
Das Problem besteht darin, dass "Data" eine numerishe Matrix ist,
sprintf
aber einen String erzeugt, also einen Vektor vom Typ CHAR. Man kann aber einem skalaren Element der Matrix keinen Vektor zuweisen.
Die Lösung ist einen Matrix-Typ zu verwenden, bei dem die Elemente auch nicht-elementare Skalare sein dürfen: Ein Cell-Array:
Dies funktioniert mit einem undokumentierten Befehl noch einfacher in einer einzigen Zeile:
Das hat aber leider den Nachteil, dass die undokumentiert ist, es gibt also keinen Help-Text dazu. Dann behält MathWorks sich vor, den Befehl zu ändern oder aus der Toolbox zu entfernen. Aber immerhin existiert er schon seit 18 Jahren und ich hoffe mal, es bleibt so.
Gruß, Jan
|
|
|
Joe777 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 11.08.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.08.2017, 10:13
Titel:
|
|
Hallo Jan.
Die Lösung mit "sprintfc..." ist natürlich optimal für meinen Fall!
Vielen Dank dafür.
Kennst du vielleicht eine Quelle für solche undokumentierten Matlab Befehle?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 14.08.2017, 14:23
Titel:
|
|
Hallo Joe777,
Eine "Quelle"? Die Befehle stammen natürlich von MathWorks selbst. Eine Dokumentation wirst Du für undokumentierte Befehle nicht finden - kaum zu glauben, aber wahr.
Eine wunderbare Zusammenfassung kannst Du finden, wenn Du in einer Internet-Suchmaschine "Matlab undocumented" eingibst. Sinnigerweise heißt die Web-Seite http://undocumentedmatlab.com/.
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|