|
|
Matlab spaltenweises überprüfen von Werten in Cell-Array |
|
André |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2020, 13:38
Titel: Matlab spaltenweises überprüfen von Werten in Cell-Array
|
|
|
|
|
Schönen guten Tag,
ich möchte gerne Spalten nach vorher definierten Werten (Zahlen und Buchstarben) durchsuchen.
Beispiel:
Ich habe in Spalte 1 die Dateinamen abgelegt, in Spalte 2 den zugehörigen Radius ( 80, 100 und 120). Die dritte Spalte beinhaltet Kräfte (F500, F1000, F1500).
Die Dateien sind nicht soritiert. Jeder der Spaltenwerte hat eine eindeutige Zuordnung, also jede Kombination ist nur einmal vorhanden. Wobei nicht jeder Wert vergeben sein muss (im Beispiel fehlt r100-- F1500 ).
Für dieses Beispiel sieht die unsortierte Tabelle wie folgt aus:
Die Sortierung für Spalte 2 beträgt die Schritte [ 80-100-120] und für Spalte 3 [F500-F1000-F1500].
In Spalte 4 soll dann die die Reihenfolge stehen, um später auf den Namen zugreifen zu können. In diesem Beispiel wäre das:
Mein bisheriges Vorgehen war wie folgt.
Ich ermittel zuerst die max. Anzahl von Zeilen, da diese immer durchlaufen werden müssen.
Dann definiere ich die Variablen
Und im nächsten Schritt durchlaufe ich die Schleife spaltenweise nach den zuvor definierten Parametern. Das klappt aber leider nicht. Es scheitert schon an der ersten Spaltenüberprüfung. Fehlermeldung: "Matrix dimensions must agree."
Vielleicht gibt es auch andere Möglichkeiten um die geschilderte Problematik zu lösen. Ich bin für alles offen ;P
Danke für eure Tipps!
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2020, 14:01
Titel:
|
|
Hallo,
sollte helfen.
Mir ist noch nicht ganz klar, was das Ziel ist. Sprich, was genau ist jetzt der Input und was soll der Output sein?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
André |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2020, 15:12
Titel:
|
|
Danke für deine Antwort,
mit deinem Code in der if Bedinung erhalte ich in der vierten Spalte die Nummerierung von 1 bis 8. Das ist aber ja falsch, da die eins beispielsweise in Zeile 5 stehen müsste.
Der Code sieht dann so aus:
Anschließend müsste man dann die Zeilen nach der neuen Nummerierung sortieren.
Das sollte aber kein problem darstellen.
Vielleicht habe ich mich falsch ausgedrück. Jede Kombination einer Zeile ist einmalig. Alternativ könnte man das auch lösen, in dem zunächst die Zeilen nach Kriterium Radius sortiert werden. Und anschließend innerhalb eines der vorgegebenen Radien nach der Kraft. Aber die Umsetzung ist wahrscheinlich noch komplizierter.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2020, 15:35
Titel:
|
|
Hallo,
ich werde immer noch nicht daraus schlau.
Hast du eine Matrix mit 3 Spalten oder wirklich dieses etwas merkwürdige Konstrukt??
Zitat: |
Name 1--r120--F1000
Name 2--r120--F500
Name 3--r120--F1500
Name 4-- r80--F1000
Name 5-- r80--F500
Name 6--r100--F500
Name 7-- r80--F1500
Name 8--r100--F1000 |
Falls das Konstrukt, in welcher Form liegt das vor? Cell, String, ...?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
André |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2020, 15:49
Titel:
|
|
Ok, jetzt weiß ich was du meinst. Im Workspace lade ich "Datei". Diese ist eine cell.
Spalte1 beinhaltet
Spalte2 beinhaltet
Spalte3 beinhaltet
Eigentlich möchte ich ja die Zeilen zunächst nach Spalte 2 und anschließend nach Spalte 3 sortiert haben. Aber mit
sortiert er leider in Spalte 2 in der Form 100, 120 und 80, das gleiche für Spalte 3, da wird nach F1000 F1500 und F500 sortiert.
Richtig wäre Spalte zwei nach r80, r100, r120 und Spalte 3
F500, F1000, F1500 zu sortieren.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2020, 15:53
Titel:
|
|
Hallo,
dann lösche doch die F und r temporär (oder noch besser dauerhaft) raus und konvertiere in Zahlen?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
André |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2020, 16:27
Titel:
|
|
Gibt es keine Möglichkeit die Zeilen nach den zuvor angelegten Variablen* zu sortieren?
*
Weil jetzt müsste ich erst etwas schreiben, um eine neue Zeile in cell hinzuzufügen, die Eigenschaften oben eintragen als Name, herauslöschen der ersten Buchstarben ab Zeile zwei und sortieren der Zeilen ab Spalte 2.
Neue Zeile hinzufügen kein Problem, diese Befüllen kein Problem, ersten Buchstarben aus Spalte 2 und 3 löschen kein Problem, aber Sortieren ab Zeile 2??
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2020, 16:42
Titel:
|
|
Hallo,
ist das umständlicher als drei geschachtelte for-Schleifen? Ich finde nicht:
Umständlich ist es vor allem nur durch die sehr spezielle Art des Datensatzes. Wenn du weiter damit arbeiten willst, würde ich dringend empfehlen, daraus einen Table mit Überschriften name, r und F zu machen und die Zahlen auch wirklich als Zahlen abzuspeichern.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
André |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2020, 17:46
Titel:
|
|
So einfach ist das mit dem Umwandeln leider nicht.
Da das ja jetzt nur ein Beispiel ist und die echte Datei weitere Spalten mit Dateiformaten wie beispielsweise CMyDaqStore_03 und string enthält.
Du hast mir aber trotzdem geholfen, da ich jetzt einen anderen Ansatz ohne verschatelte for-Schleife verfolge. Falls ich noch weitere Fragen haben sollte, melde ich mich erneut.
|
|
|
|
|
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.
|
|