|
|
|
Laufvariable in Zähler gesteuerter Schleife |
|
| maxkusenberg |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: 7.04.365(R14) Service Pack 2
|
 |
|
|
 |
|
Verfasst am: 28.11.2011, 16:18
Titel: Laufvariable in Zähler gesteuerter Schleife
|
 |
In einer zählergesteuerten Schleife erzeuge ich drei Zeilenvektoren
Die drei Vektoren haben 3 verschiedene Namen:
Ich möchte diese Vektoren mittels einer Schleife (!) in eine Matrix F (3x4) zusammenfassen
Das Zusammenfassen funktionniert nicht. Die Ausgabe lautet
Warum schnallt er denn nicht, dass FEED_X_i eben FEED_X_1 ist wenn i gleich 1 ist.
... Kann mir jemand helfen?
|
|
|
|
|
|
| Matt Lappen |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 23.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2011, 16:43
Titel:
|
 |
Hi,
du sprichst in deinem Code die Variable 'FEED_X_i' an und diese gibt es nicht. Um einen Code in einer Schleife zu variieren, kannst du den eval() Befehl benutzen:
|
|
|
|
| maxkusenberg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: 7.04.365(R14) Service Pack 2
|
 |
|
|
 |
|
Verfasst am: 28.11.2011, 16:48
Titel:
|
 |
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.11.2011, 16:55
Titel: Re: Laufvariable in Zähler gesteuerter Schleife
|
 |
| |
 |
|
Hallo maxkusenberg,
Das "clear all" zu Beginn löscht alle in den Speicher geladenen Funktionen. Das erneute Einlesen und Übersetzen ist sehr zeitaufwändig. Während das Löschen der Variablen in sehr seltenen Fällen helfen kann Tippfehler in Scripts zu entdecken -das ist aber eine Holzhammer-Methode-, ist "clear all" für gar nichts nützlich - es sei denn, man hat während das Programm läuft den Code aller M-Files dynamisch geändert...
Einen Index im Namen der Variablen zu verstecken ist, wie Du merkst, eine komplizierte Methode. Sie gehört aber zu den am häufigsten implementierten "bad programming practizes".
Und die Nutzung von Inputs und Outputs ist ebenfalls deutlich effizienter als Variablen "ferngesteuert" per ASSIGNIN zu erzeugen. Auch die Lösung per EVAL ist erstens häufig eine Quelle von Fehlern, zweitens kaum zu debuggen und drittens bremst es Matlab stark aus.
Ein Index ist dagegen als Index sehr praktisch. In Deinem Fall "FEED_X_{i}". Das Zusammenfassen der Vektoren wäre dann:
| Zitat: |
| Warum schnallt er denn nicht, dass FEED_X_i eben FEED_X_1 ist wenn i gleich 1 ist. |
Nun, die Frage ist schwer zu beanwtorten. Es wäre schon sehr spirituell, wenn Matlab verstehen würde, was Du möchtest, obwohl Du explizit hingeschrieben hast, dass Du die Variable "FEED_X_i" meinst. Es gab zwar immer wieder Forderungen, dass Matlab endlich den dwim-Operator enthält - "do what I mean". TMW weigert sich aber bisher - Google weiß mehr dazu:
Damit würde Matlab dann in "FEED_X_i" automatisch statt "i" die gewünschte Zahl einsetzen, aber natürlich nicht in "pi", "inf", "input" etc. Bis dahin müssen wir aber noch explizit angeben, wann "i" ein Index sein soll.
Gruß, Jan
PS. Sollte irgend jemand verwirrt sein:
|
|
|
|
| maxkusenberg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.11.11
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: 7.04.365(R14) Service Pack 2
|
 |
|
|
 |
|
Verfasst am: 30.11.2011, 11:55
Titel:
|
 |
Hallo Jan,
Deine Punkte leuchten mir ein. Den Hinweis zum clear Befehl lass ich mal so stehen. Aber spätestens bei assignin und eval stimme ich Dir absolut zu. Das ist Käse. Was mir spätestens auffält, seit ich beide Funktionen in einander schachteln muss, was ganz genau mal garnicht geht. Ich denke also angestrengt über eine alternative Struktur nach....
Dein Vorschlag den cat Befehl für das zusammenfassen der 3 Vektoren zu benutzen ist super, weil ich mit dieser Funktion nun bewusst bin und bestimmt oft gebrauchen werde.
Könntest Du, oder jmd. anderes aber bitte nochmal helfen und aufklären, warum ich folgendes "Ergebnis" erhalte?
Eingabe wie oben beschrieben
danach
"Ergebnis"
10.000 Dank
|
|
|
|
| soad |

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2011, 13:34
Titel:
|
 |
Im Grunde ist es das gleiche Problem wie zuvor. Eine Möglichkeit wäre:
|
|
|
|
|
|
|
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.
|
|