|
|
| steffen1187 |

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 19.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 07:56
Titel: field names bei struct
|
 |
Guten Morgen zusammen,
ich habe schon wieder ein kleines Problem für das ich über google / Forensuche leider noch keine Lösung finden konnte.
Ist es irgendwie möglich, fieldnames in einer struct mit Zahlen zu verwenden?
Wenn ich über rate=struct('400bar',[ ... die Definition vornehme wird der Fehler "Invalid field name "400bar"" ausgegeben. Sobald ich alle Ziffern wegnehme funktionierts. Natürlich könnte ich vierhundert ausschreiben, aber das muss doch schöner gehen, oder?
Grüße und Dank
Steffen
|
|
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 08:08
Titel:
|
 |
variablen namen müssen mit einem buchstaben anfangen soweit ich weis.
also machst du entweder bar400 oder v400bar oder irgendwie sowas in der art. wenn die zahlen fortlaufend sind könne man es auch als index verwenden oder so.
|
|
|
|
| steffen1187 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 19.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 08:36
Titel:
|
 |
Cool, funktioniert, danke
wer hat sich n das so ausgedacht
edit: kaum funktionierts mach sich die nächste Frage breit...
ich hab die verschiedenen Drücke (sind nicht ganz periodisch) in einem cell array "drueck" abgelegt und möchte nun mit hilfe einer for Schleife nach und nach aus meiner struct die verschiedenen Druecke auslesen.
nun rafft er nicht dass er als field name das Ergebnis von "druecke{d}" verwenden soll. Ich habe es auch schon mit druck = druecke{d} und rate{j}.druck versucht, das selbe Ergebnis...
Grüße
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 09:30
Titel:
|
 |
versteh ich nicht. du hast in einem cellarray drücke gespeichert das drueke heist. sind das jetzt int werte oder was? dann hast du noch einen struckt der auch druecke heist und in dem sind ebenfalls drücke gespeichert. und du willst jetzt die werte des einen arrays als namen fürs andere verwenden?
blick ich nicht durch. mach mal n beispiel oder guck in der doch bei
"Returning Data from a Struct Array"
|
|
|
|
| steffen1187 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 19.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 09:43
Titel:
|
 |
| |
 |
|
Also
ich habe Messwerte für Durchflussraten mehrere Objekte bei verschiedenen Drücken.
das cell array rate{eins,zwei} verweist auf die verschiedenen Messobjekte, die wiederum structs sind. In den structs wird auf die Variablen verwiesen, die die Messwerte dementsprechend verwalten.
eins = struct('bar400',[Var400barObj1],'bar800',[Var800barObj1])
zwei = struct('bar400',[Var400barObj2],'bar800',[Var800barObj2])
nun ist die Druckabstufung nicht regelmäßig, sodass ich in
druecke = {bar400, bar800} die verschiedenen Drücke liegen hab.
was ich ermitteln möchte ist für jeden Druck die Streuung zwischen den Injektoren, also die Differenz des kleinsten und das größten Werts. Das ist im Beispiel noch nicht implementiert.
Ich möchte also
für den ersten Druck bar400 die Messwerte verrechnen, mir zunächst den größten und kleinsten Wert ermitteln (hierzu die innere Schleife mit den verschiedenen Messobjekten), die Differenz bilden, evtl auch die Prozentuale Abweichung und die Ergebnisse ablegen. Dann soll das selbe für den nächsten Druck geschehen.
mit rate{j}.druecke{d} will ich also zum Beispiel auf rate{1}.druecke{1} --> eins.bar400 zugreifen, danach auf zwei.bar400, dann drei.bar400 und sobald alle Objekte abgefragt wurden eins.bar800, zwei.bar800 etc.
Hierzu muss er jedoch verstehen, dass er im Objekt eins nicht nach dem field name "druecke" suchen soll, was er bislang jedoch anscheinend tut.
Ich hoff jetzt ist das Ganze etwas verständlicher
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 09:51
Titel:
|
 |
das steht glaub ich auch alles in der doc aber ich denke du meinst das hir
kleine anmerkung. du solltest nicht min und max definieren. die sind schon mit matlab internen funktionen belegt. so kannst du sie nicht mehr benutzen und musst die variablen erst löschen bevor das weider geht. deswegen sollte es vermieden werden variablen namen zu benutzen die schon von internen funktionen belegt sind. zb max min j i etc
|
|
|
|
| steffen1187 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 19.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 10:02
Titel:
|
 |
D
Ah, die kleine verfluchte Klammer um (druecke{d}) wars
Du bist mein Held!
der Rest war soweit eigentlich klar
danke für den Tip mit min/max, das selbe hab ich schonmal mit xlim verbockt...
Grüße
Steffen
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.03.2012, 15:00
Titel:
|
 |
Hallo steffen1187,
Die Speicherung von Informationen im Variablennamen führt immer wieder zu Schwierigkeiten, da man dann ein programm nur mit großer Mühe erweitern kann. Wenn man z.B. bar10, bar20, bar100, ... verwendet, ist es aufwändig an allen Stellen im Programm noch ein bar15 einzufügen.
Eleganter und effizienter wäre z.B. ein Struct-Array:
barStruct(1).Pressure = 10;
barStruct(1).Value = xyz;
barStruct(2).Pressure = 20;
barStruct(2).Value = abc;
...
Dann kann man die Liste der "Variablen" automatisch um 500'000 Einträge ergänzen ohne am Programmtext irgendetwas ändern zu müssen.
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.
|
|