WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

String nach bestimmter Anzahl an Zeichen aufteilen

 

Headcracker
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.11.11
Wohnort: Erfurt
Version: ---
     Beitrag Verfasst am: 27.11.2011, 13:46     Titel: String nach bestimmter Anzahl an Zeichen aufteilen
  Antworten mit Zitat      
Hallo!

Ich bin neu in diesem Forum, und arbeite auch noch nicht lange mit Matlab.
Mein Professor hat mich ziemlich überfallen, als ich auf einmal mit Matlab programmieren sollte. Inzwischen komme ich einigermaßen klar.

Zu meinem Problem:
Ich habe ein senkrechtes Cell-Array "Uhrzeit", in jeder Zelle steht eine Uhrzeit mit dem Format HH:MM:SS
Die Sekunden stehen jedoch immer auf 00, sind somit für mich unwichtig und stören nur in der Ausgabe. Ich möchte also nur HH:MM haben.

Ich suche nun schon seit ein paar Tagen nach einer Möglichkeit, wie ich so einen Ausdruck nach einer bestimmten Anzahl von Zeichen teilen kann, sodass ich mit dem 1. Teil weiterarbeiten kann. Meine Literatur zu Matlab befindet sich derzeit etliche Kilometer entfernt in meiner WG, und die Suche bei Google und hier im Forum hat mit auch nicht weitergeholfen.

Ich habe vorher bereits mit folgendem Code
Code:

DatumUhrzeit = cell(1441,1);
Uhrzeit = cell(1441,1);

for i = 2 : 1442
    DatumUhrzeit(i-1,1) = textscan(E_Textdaten{i,1}, '%s', 'delimiter', ' ');
end

...

for i = 2 : 1440
    Uhrzeit{i,1} = DatumUhrzeit{i,1}{2,1};
end
 

die Uhrzeit herausgefiltert.

Ob das eine effektive Methode ist, oder ob es auch einfacher geht, weiß ich nicht. Wie gesagt, ich bin noch ziemlich unerfahren was Matlab angeht und bin froh, dass die erwarteten Ergebnisse herauskommen.

Aber an o.g. Problem hänge ich derzeit fest. textscan kann ich hier nicht mit 'delimiter' anwenden, da er schon am 1. Doppelpunkt trennen würde. Aber ich habe in der Matlab-Dokumentation auch nichts gefunden, wonach ich mit textscan auch nach Anzahl der Zeichen trennen kann.

MfG Tobias
Private Nachricht senden Benutzer-Profile anzeigen


Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2011, 14:06     Titel:
  Antworten mit Zitat      
Hallo,
guck mal ob es eine Funktion gibt, die die Zeichen in ASCII (ich meine die Zahlen, die die Zeichen kodieren) umwandelt. Dann hast du ein Zahlenarray und kannst nach einer Zahl (der ":" ist z.B. 58 ) suchen. Ist nicht elegant, funktioniert aber.
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Headcracker
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.11.11
Wohnort: Erfurt
Version: ---
     Beitrag Verfasst am: 27.11.2011, 14:31     Titel:
  Antworten mit Zitat      
Danke erstmal für die Antwort.

Aber habe ich dann nicht immer noch das Problem, dass die 58 für den Doppelpunkt 2 Mal vorkommt? Somit wüsste ich ja immer noch nicht, wie ich denn sagen kann, dass Matlab erst bei dem 2. Doppelpunkt, bzw. bei der 2. 58 trennen soll.

Wenn es eine Möglichkeit gibt, dass Matlab nach bei einem bestimmten Zeichen trennt, aber das 1. Vorkommen dieses Zeichen ignoriert und erst beim 2. Vorkommen den String teilt (oder alternativ den String von hinten nach vorne liest?), dann bräuchte ich auch nicht in ASCII-Zahlen umzuwandeln.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2011, 15:07     Titel:
  Antworten mit Zitat      
Ach so...jetzt versteh ich dein Problem.
Ich würde einfach an jedem Doppelpunkt trennen und danach nur noch die Elemente im array ansprechen, die ich brauche, z.B.
string = "15:07:00 " --> array=[15,7,0] und dein Skript muss dann wissen, dass es z.B. nur array(1) und array(2) ansprechen darf.
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2011, 15:24     Titel:
  Antworten mit Zitat      
Code:
x = '20:08:00'
x = datestr(x, 'HH:MM'); % '20:08'


Um Datumsangaben zu verarbeiten, empfehle ich dir auch die Befehle DATEVEC und DATENUM.
Private Nachricht senden Benutzer-Profile anzeigen
 
Headcracker
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.11.11
Wohnort: Erfurt
Version: ---
     Beitrag Verfasst am: 27.11.2011, 15:33     Titel:
  Antworten mit Zitat      
Danke soad, das ist genau das was ich brauche!
Mit Datumsfunktionen hatte ich bisher noch gar nicht gearbeitet, aber es funktioniert so einwandfrei. Very Happy

Kevin, dein Vorschlag hätte sicherlich auch geklappt. Wär aber weniger elegant gewesen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2026 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.