|
|
Filtern von allen Matrices in struct array |
|
Gast14896 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2017, 10:12
Titel: Filtern von allen Matrices in struct array
|
 |
|
 |
|
Hallo,
ich habe eine Vielzahl von Variablen aus einem .txt file gelesen und diese in einem struct array gespeichert (ich wollte einzelne Matrices umgehen da es sich um sehr viele Variablen handelt und struct sehr übersichtlich ist).
Bsp.:
Ich möchte die einzelnen Matrices (nicht alle sind double, wegen Namen etc sind auch cells dabei) im folgenden mit bestimmen Kritrien z.B. Min und Max filtern.
Für eine einzelne Matrix würde ich also
Das Ganze würde ich gerne automatisch für das komplette struct machen (ausgenommen den cell arrays). Gibt es hier eine Hilfreiche Funktion?
Am besten wäre außerdem, wenn ich die einzelnen Variablen nicht tippen müsste (sind einige 100), sondern nur sagen:
nehme das struct von variablen 1 bis 100 und prüfe die mini und maxi (die ich dann eben als Vektor definieren würde, da jede Variable andere Grenzwerte aufweist. Ich habe es bereits mit einem for-loop versucht, allerdings muss ich die Variablennamen verwenden.
Vielen Dank für eure Hilfe!
|
|
|
|
|
Gast14896 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2017, 11:33
Titel: structfun
|
 |
Ich kann mittels structfun folgendes prüfen:
was im Prinzip genau das macht, was ich wollte. Allerdings würde ich gerne für das erste Feld im Struct mit mini=.2 und maxi=.6, für das zweite Feld aber z.B. mini=.6, maxi=.75.
Is das möglich?
Außerdem: Wie kann ich die logical arrays in B anschließend nutzen um Data1 zu filtern? Bisher ging das relativ einfach über logical indexing... z.B. Data1(~B)=0
Wie funktioniert das mit struct?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.02.2017, 12:01
Titel: Re: structfun
|
 |
Hallo Gast14896,
Die
structfun
bezieht sich auf alle Felder, Du wolltest aber nur die numerischen Inhalte bearbeiten, oder?
"Einige 100" Felder ist ungewöhnlich viel. Kann man die numerischen Daten nicht in numerischen Arrays zusammen fassen? Das würde die Arbeit deutlich vereinfachen.
Du kannst einen Struct effizient in ein Cell umwandeln, und dann Indices verwenden:
Gruß, Jan
|
|
|
Gast14896 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2017, 12:26
Titel: re
|
 |
Lieber Jan,
danke für die schnelle Antwort.
Ich habe angefangen mit numerischen Arrays zu arbeiten. Da alle Variablen die gleiche Dimension haben, war das soweit auch super. Ich hatte diese in einem Array mit (x,y,n) zusammengefasst (wobei n die Anzahl der Variablen war). Außderdem ein Vektor der Länge n um min und max zu filtern.
Beim struct habe ich den Vorteil, dass ich sehr einfach gruppieren kann und sofort weiß, in welcher Matrix welche Info steckt. Beim numerischen Arrays muss ich immer wieder händisch prüfen "was war nochmal matrix (:,:,78 )"
Ich könnte auch einfach über
die nicht-numerischen Felder entfernen (wenn es dann einfacher wäre). Am schönsten wäre für mich, wenn ich ebenfalls ein Filterstruct hätte, also analog zu oben
und dann jede Matrix mit dem jeweiligen Filter prüfen. Gibt es hier eine einfache Möglichkeit oder würdest du ein rein numerisches Format vorteilhafter finden?
Danke!
|
|
|
Gast14896 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2017, 12:50
Titel: re
|
 |
ich könnte folgendes versuchen:
Ist das zu umständlich?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.02.2017, 12:36
Titel: Re: re
|
 |
Hallo,
Oder mit "dynamic fieldnames" statt
getfield
:
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.
|
|