|
|
dynamische Struktur mithilfe einer for schleife erstellen |
|
Diana |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.05.2013, 15:32
Titel: dynamische Struktur mithilfe einer for schleife erstellen
|
 |
|
 |
|
Hallo!
ich bin ziemlicher Neuling in der Matlabwelt, hoffe aber trotzdem auf Hilfe.
Und zwar:
Ich habe ca 100 Textdateien mit Messdaten, die ich einlesen möchte. Die Funktion, die ich geschrieben habe läuft auch. Darin speicher ich die eingelesenen Messwerte in einem struct Messdaten.
Am Schluss möchte ich 100 Strukturen vom Typ Messdaten haben.
Jetzt ist es aber ziemlich aufwendig, 100 mal die Funktion aufzurufen,
deshalb habe ich an eine for-Schleife gedacht:
als Aufruf im Command Window:
Problem 1: Anstatt die Strutkuren 50 -150 zu erstlllen, erstellt mir die Funktion Strukturen immer beginnend bei 1 (die aber natürlich leer sind), Ich möchte aber erst ab Messwerte(51) Strukturen erzeugen.
Problem 2: Die for-schleife im Coomand Window überschreibt mir bei jedem Durchgang die Struktureinträge, sprich bei z=50 habe ich für Messwerte(50).X_Wert Einträge, die aber bei z=51 wieder mit null überschrieben sind. Wie kann ich das ändern?
Wäre super, wnen mir jemand helfen könnte,
Danke schon einmal!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.05.2013, 16:24
Titel: Re: dynamische Struktur mithilfe einer for schleife erstelle
|
 |
Hallo Diana,
Mir wird das Problem nicht ganz klar. Vielleicht hilft dies:
Das "daten"-Array kann natürlich nicht einfach bei 51 Anfangen, da alle Arrays in Matlab linear indiziert sind. Da das der Sinn eines Arrays ist, suchst du vielleicht nach etwas anderem:
Das Problem 2 verstehe ich gar nicht. Kannst Du den dazugehörigen Matlab-Code posten?
Gruß, Jan
|
|
|
Diana |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.05.2013, 07:45
Titel:
|
 |
|
 |
|
danke schon mal für deine Hilfe.
Ich versuche mein Problem etwas genauer zu beschreiben:
Die Funktion einlesenX soll jeweils eine Textdatei mit Messwerten einlesen und diese zunächst in die Matrix X ablegen. Die Werte der Marix X sollen dann in das struct Messwerte (globale Variable) abgelegt werden, am besten in die gleiche Indexnummer wie die Textdatei hat, also dass z. Bsp. Messwerte(51).X_Wert alle Messwerte der Messdatendatei Messdaten51.txt enthält. Ich habe eben schon ein Fehler entdeckt und zwar glaube ich, dass in der Funktion keine for-schleife notwendig ist, da ich ja bei jedem Aufruf der Funktion nur ein Struct genereieren möchte und nicht 100. Deshalb die korrigierte Variante der Funktion (ohne die einlesenBefehle mit fopen, getline etc.)
Du hast geschrieben, dass das mit dem Index mit Matlab nicht so einfach geht, wäre es denn möglich, dass ich mit einem zusätzlichen Befehl einfach die Messdatenstrukturen 1-49 lösche?
ansonsten muss ich es wohl doch mit deiner Messwerte.Index Variante machen...
So und mein Problem 2: Da es ziemlich aufwendig ist, 100mal die Funktion einlesen X aufzurufen, dachte ich, ich könnte dies mit einer for-schleife realisieren, (welche ich zwar schon gepostet hab, aber hier gerne nochmal:
diese läuft zwar, aber legt bei jedem Durchgang das struct Messwerte neu an, d.h. die eingelesenen Daten vom Durchgang zuvor gehen verloren.
Wie kann ich es so lösen, dass die beim Durchgang 1 eingelesenen und in Messwerte(50) abgespeicherten Messwerte bei Durchgang 2 nicht verloren gehen, sondern dass mir die for-schleife einfach ein Objekt mehr abspeichert, nämlich zusätzlich zu Messwerte(50) auch Messwerte(51) usw.?
Also dass bei jedem Durchgang ein weiteres Objekt zu den alten hinzugefügt wird und nicht die alten überspeichert?
Jetzt etwas klarer, was ich meine?Falls nicht, sag Bescheid
Wäre super, wenn du nochmal drüber schauen würdest...
|
|
|
jurtsche |

Forum-Century
|
 |
Beiträge: 123
|
 |
|
 |
Anmeldedatum: 26.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.05.2013, 08:21
Titel:
|
 |
Prinzipiell anders.
Zuerst:
Die Funktion gibt "Messwert" zurück, wie in der 1. Zeile definiert.
Dann:
fertig.
LG
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.05.2013, 09:19
Titel:
|
 |
Hallo,
zum Code von Diana:
Hier initialisierst du die Struktur. Wenn du das jedes Mal machst, verlierst du die Daten von vorher. Dieses Initialisieren ist aber ohnehin vollkommen unnötig.
Grüße,
Harald
|
|
|
Diana |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.05.2013, 10:15
Titel:
|
 |
danke für eure hilfe ich hab jetzt die variante von jurtsche angewandt und es hat funktioniert
|
|
|
|
|
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.
|
|