|
|
Fehler im "subplot" Befehl mit einer for-Schleife |
|
Homer687 |

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 03.08.10
|
 |
|
 |
Wohnort: Hamburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 10:13
Titel: Fehler im "subplot" Befehl mit einer for-Schleife
|
 |
Hallo alle zusammen,
ich habe folgendes Problem.
Ich möchte in einem subplot Befehl eine for-Schleife programmieren. Aber leider bekomme ich mit meiner for-Schleife nicht die selbe Grafische Ausgabe als ohne for-Schleife.
Kann mir vielleicht jemand helfen, wo da mein Fehler liegt.
Anbei mein Code ohne und mit for-Schleife.
jetzt mit for-Schleife
Vielen Dank für Eure Hilfe
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 15:15
Titel: Re: Fehler im "subplot" Befehl mit einer for-Schle
|
 |
|
 |
|
Hallo Homer,
Homer687 hat Folgendes geschrieben: |
|
"['s' num2str(i)]" ist ein String, also ein CHAR Vektor in Matlab. Wenn man damit Operationen ausführt, wie z.B. das unäre Minus, wird das CHAR Array automatisch in ein DOUBLE Array umgewandelt. Siehe:
Du suchst aber nicht den String ['s' num2str(i)], sondern den Inhalt der Variable dieses Namens. Zwar kommt man daran per EVAL Funktion.
Da es nun meine Bestimmung zu sein scheint, täglich von EVAL abzuraten, werde ich auch heute dieser Tradition treu bleiben:
Statt die Variablen mit verschiedenen Namen zu erstellen, könntest Du sie gleich entweder in eine Matrix, Struct oder in ein CELL Array packen. Eine Anhäufung verschiedener Variablen im Nachhinein über den Variablen-Namen mit einer inneren Struktur zu versehen, ist kein effizienter Programmierstil. Das ist vergleichbar damit, Schülern ihren Stundenplan als Nachnamen zu geben, oder Lebensmittel im Supermarkt mit ihrem Preis zu benennen. Beides würde natürlich funktionieren, aber der Nachteile des Mischens zwischen Daten-Struktur und Daten-Wert ist eine exponentiell steigende Programm-Komplexität.
Nebenbei wird in Deiner FOR Schleife der Title immer wieder neu geschrieben und der Plot auch jedesmal überschrieben. Wahrscheinlich ist das nicht beabsichtigt, oder?
Gruß, Jan
|
|
|
Homer687 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 03.08.10
|
 |
|
 |
Wohnort: Hamburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 15:59
Titel:
|
 |
Hallo Jan,
vielen Dank für Deine Antwort.
Vielleicht kannst Du heute mal eine Ausnahme machen und diesmal nicht von EVAL abraten, denn ich weiß in Moment gerade nicht weiter. Wie kann ich den mit EVAL in meinen Bsp. auf meine Variablen zugreifen?
So gut bin ich in nicht MATLAB, so das ich mein ganzes Programm effizienter schreiben kann. Aber Du hast recht, eine Anhäufung verschiedener Variablen im Nachhinein über den Variablen-Namen mit einer inneren Struktur zu versehen, ist kein effizienter Programmierstil.
Ich weiß das der der Title immer wieder neu geschrieben wird, aber das ist in diesem Bsp. so gewollt, da ich mehrere verschiedene Diagramme euf einen figure habe.
Gruß...
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 16:07
Titel:
|
 |
Hallo Homer,
ich kann mich kaum darum herum drücken, Dir die unpraktischtse Lösung zu zeigen:
Deutlich stabiler und sicherer wäre es aber, die Variablen als Felder eines Structs zu definieren und per "dynamic field names" darauf zuzugreifen:
SPRINTF oder INT2STR ist kein nennenswerter Unterschied, vielleicht eine Geschmacksfrage. Aber EVAL zu vermeiden kann einem viel Debug-Zeit einsparen.
Gruß, Jan
|
|
|
Homer687 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 03.08.10
|
 |
|
 |
Wohnort: Hamburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 16:37
Titel:
|
 |
Leider ist die Grafische Ausgabe auch bei der unpraktischen Lösung nicht die selbe, als wenn ich es ohne Schleife laufen lasse
Trotzdem Vielen Dank für die Hilfe.
Vielleicht gibt es doch noch eine andere Lösung für mein Problem?
Gruß
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.08.2010, 17:58
Titel:
|
 |
Hallo Homer,
Moment mal. BAR(Matrix) erzeugt natürlich andere Ausgaben als [BAR(Vector), BAR(Vector), ...].
Wieso möchtest Du denn eine FOR-Schleife benutzen?
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 - 2025
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.
|
|