|
|
Vektorinhalt sortieren (Datum) |
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 12:42
Titel: Vektorinhalt sortieren (Datum)
|
 |
Hallo an alle!
Erstmal eine kurze Problemerläuterung:
ich habe einen Vektor, der mit Datumsangaben gefüllt ist (im Format dd.mm.yyyy, jeweils als String).
In diesem Vektor befinden sich Datumsangaben über mehrere Monate, unsortiert (also zB 01.02.2010, 12.01.2010, 10.03.2010, usw.).
Wie kann ich nun diesen Vektor aufsteigend nach Datum sortieren? Wenn ich es mit "sort" versuche, wird nur entsprechend nach "dd" sortiert, der Rest interessiert Matlab nicht (also aus obigem Beispiel: 01.02.2010, 10.03.2010, 12.01.2010, usw.).
Was ich aber haben möchte, wäre eine Sortierung nach realem Datum, also 12.01.2010, 01.02.2010, 10.03.2010, usw.
Hat jemand eine Idee oder Funktion, wie bzw. mit der ich dieses Problem lösen kann?
Vielen Dank im Voraus.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 13:29
Titel:
|
 |
Hallo,
in sortierbares Format umwandeln, sortieren, zurückwandeln.
Wenn x der Vektor ist:
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 14:04
Titel:
|
 |
Erstmal Danke für die schnelle Antwort. Funktioniert soweit wunderbar .
Allerdings habe ich jetzt ein etwas erweitertes Problem. Das Datum steht nämlich innerhalb eines Strings.
Also steht zB statt 01.02.2010 jetzt 01.02.2010_a_b_c.txt.
Gibt es nun auch eine Möglichkeit, solche Strings nach dem darin enthaltenen Datum zu sortieren?
Es stehen, wie beim Eingangsbeispiel, wieder mehrere solcher Dateinamen in einem Vektor.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 14:08
Titel:
|
 |
Hallo,
sofern die Dateinamen immer so aufgebaut sind wie in diesem Fall:
1. Datum extrahieren (die ersten 10 Zeichen)
2. Sortieren wie zuvor, aber Sortierreihenfolge als 2. Argument von sort zurückgeben lassen
3. Diese Sortierreihenfolge auf die originalen Dateinamen anwenden.
Falls du mehr Hilfe brauchst, bitte ein konkretes Beispiel geben, wie deine Dateinamen vorliegen (Cell Array, Char Array, ... ?).
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 14:13
Titel:
|
 |
Die Dateinamen liegen in einem, jetzt in dem konkreten Fall, 69x1 cell array vor. 69 ist variabel, cell array ist es aber immer.
Und die Dateinamen sind alle, entsprechend natürlich unterschiedlich, in dem von mir schon genannten Formal dd.mm.yyyy_a_b_c.txt.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 14:18
Titel:
|
 |
Hallo,
das sollte gehen:
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 14:40
Titel:
|
 |
Leider bringt mir Matlab hier
dates = cellfun(@(x) x(1:10), files, 'UniformOutput', false);
diese Fehlermeldung:
??? Too many inputs.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 15:29
Titel:
|
 |
Hallo,
passiert das bei dem von mir geposteten Code oder wenn du versuchst, das auf deine eigenen Daten anzuwenden?
Falls ersteres: welche MATLAB-Version verwendest du?
Falls letzteres: deine Daten weichen dann anscheinend von den von mir verwendeten Test-Daten ab. Inwiefern? Vielleicht kannst du mir ein paar Zeilen schicken, die tatsächlich Test-Daten im Format deiner Daten generieren.
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 15:56
Titel:
|
 |
Hallo,
ich habe dein Beispiel erstmal so übernommen, wie du es gepostet hast und da kam der Fehler.
Meine Version von Matlab ist die 7 (R14).
Falls du trotzdem noch ein paar Textzeilen brauchst, ist das auch kein Problem.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.03.2010, 18:30
Titel:
|
 |
Ja, das ist eine etwas ältere Version. Schau dir doch mal die Doku zu cellfun in dieser Version an, ob du selbst herausfindest, wo das Problem liegt. Ansonsten musst du das wohl mit einer for-Schleife lösen... oder dir ein neueres MATLAB zulegen
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2010, 11:42
Titel:
|
 |
Die Funktion wäre zwar in dem Fall praktisch, aber ich denke, deswegen wird es keine neue Version von Matlab für mich geben .
Zu dem Problem damit an sich: die cellfun aus meiner Version unterstützt noch keine function handles, somit hat sich dein Beispielquelltext wohl oder übel erledigt.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.03.2010, 19:01
Titel:
|
 |
Hallo,
Die Alternative wäre zu versuchen, dasselbe ohne Function Handles zu machen - oder eben in einer for-Schleife. Habe leider keine so alte Version
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2010, 10:43
Titel:
|
 |
Danke für die Hilfe, auch wenn ich bis jetzt noch nichts brauchbares herausbekommen habe .
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.03.2010, 10:44
Titel:
|
 |
Wo hängts denn?
Grüße,
Harald
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2010, 11:19
Titel:
|
 |
Das Datum aus dem String auszulesen ist soweit kein Problem, das bekomm ich hin. Umwandeln in das richtige Format und sortieren somit auch.
Nur fehlt mir im Moment der Ansatz, wie ich nach dem Sortieren den Dateinamen wieder richtig zusammenfüge.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|