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

Datums Problem

 

Penguins
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2016, 14:55     Titel: Datums Problem
  Antworten mit Zitat      
Hallo zusammen,

ich habe erst seit 3 Tagen mit Matlab begonnen und nun habe ich Probleme mit der Formatierung einer Textdatei.
Ich importiere diese. Die ersten 45 Zeilen sind nur headers. Es gibt nur eine Spalte.
ab Zeile 45 steht dann folgender Ausdruck:

2016-11-12T08:33:59.779807XXXXXXX

XXXX ist der übrige Anhängsel. Da ich eine eine Grunddatei verwende, möchte ich ein Text- oder StringArray erstellen mit folgender Zusammensetzung:

12.11.2016 08:33:59,779807

Um zunächst die Zahlen zu erhalten habe ich folgende Schleife benutzt. Die funktioniert auch.

Code:
% Das ist mein Programm
Data = importdata('datei.txt',':');

zeile=45     %kopfzeilen werden abgeschnitten      
i = 1        
while zeile<=length(Data)
tmp = Data{zeile};
yy(i)=str2num(tmp(1:4));
mm(i)=str2num(tmp(6:7));
dd(i)=str2num(tmp(9:10));
h(i)=str2num(tmp(12:13));
m(i)=str2num(tmp(15:16));
s(i)=str2num(tmp(18:27));
i=i+1;
zeile=zeile+1;
 


Wie kann ich denn jetzt eine String Matrix erstellen, um das gewünschte Format für jeden Schritt i sicherzustellen?

Schreibe ich z.B folgenden Code mit in die Schleife:

Code:
%
text=[tmp(9:10),'.',tmp(6:7),'.',tmp(1:4),' ',tmp(12:13),':',tmp(15:16),':',tmp(18:27)]
 


,erhalte ich das Format für den letzten Schritt.

Jedoch kann ich leider nicht einfach text(i) angeben. Das funktioniert nicht.
Ich würde mich über Hilfe freuen.

Vielen Dank
Penguins
Private Nachricht senden Benutzer-Profile anzeigen


Penguins
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2016, 15:29     Titel:
  Antworten mit Zitat      
Sonst würde ich mich auch darüber freuen, wenn Ihr mir sagen könntet, wie ich das Datum und die Zeit mit diesem "YYYY:MM:DD" vernünftig hinbekomme.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.11.2016, 18:36     Titel: Re: Datums Problem
  Antworten mit Zitat      
Hallo Penguins,

Ist das Ziel das Schreiben eines Files?
Was ist das Ergebnis von "Data = importdata('datei.txt',':');"? das können wir mangels Text-Datei nicht selbst herausfinden. Das zu wissen ist aber wichtig, denn das sind ja Deine Input-Daten.

Zitat:
XXXX ist der übrige Anhängsel. Da ich eine eine Grunddatei verwende, möchte ich ein Text- oder StringArray erstellen mit folgender Zusammensetzung:
12.11.2016 08:33:59,779807

Das ist nicht klar. Was ist eine "Grunddatei"? Möchtest Du wirklich ein Komma als Dezimal-Trenner haben? Damit gibt es immer viele Probleme und man muss für den Import zunächst die Kommas wieder in Punkte umwandeln.

Code:
Data = importdata('datei.txt',':');

% 2016-11-12T08:33:59.779807
Result = zeros(length(Data) - 45, 6);
for icol = 1:length(Data) - 45
  Line = Data(icol + 45);
  Result(icol, :) = sscanf(Line, '%4d-%2d-%2dT%2d:%2d:%g', [1, 6]);
end

Und dann möchtest Du das ganze umsortieren und wieder ausgeben, oder?

Code:
% 2016-11-12T08:33:59.779807
% 12.11.2016 08:33:59,779807
Result = Result(:, [3,2,1,4,5,6]);
sprintf('%.2d.%.2d.%.4d %.2d:%.2d:%g\n', Result.');
 

Und jetzt brauchst Du nur das sprintf durch fprintf zu ersetzen (und fopen usw.), um das in ein File zu schreiben.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Penguins
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2016, 10:12     Titel:
  Antworten mit Zitat      
Erstmal vielen Dank, dass mir so schnell geholfen wird.
Angehängt habe ich ein Screenshot von der Matrix gemacht, von der Textdatei, die importiert wird.

Ich habe eine Vorlage bekommen, die einzelne Ordner durchsucht, die darin entsprechenden Textdateien in eine Excel datei umwandelt. Jetzt möchte ich das für meine Textdateien nutzen und auch Auswertungen machen.

Das Einlese Programm funktioniert schon für einige Textdateien, wenn man die importierte Martix in .data und .textdata aufteilen kann:

Code:
% Aufteilung im Einlese Programm (eine Funktion)

 data.textdata = data.textdata(zeile:end,1);  
        % Datum in Zahl umwandeln:
        Zeit = datenum(data.textdata,Zeiteinheit);

%Wobei für die Zeiteinheit, welche in die Funktion Einlesen gilt:
Zeiteinheit='dd.mm.yyyy HH:MM:SS'

%die Daten Matrix wird dann hier erstellet:
Datei_n = [Zeit, data.data];


Ungefähr so möchte ich das auch für die Textdatei machen, die ich angehängt habe. Jedoch funktioniert, dass nicht so gut.
Mit dlmread krieg ich die "Data" sozusagen, das funktioniert auch. Nun möchte ich einfach diese datenum wie oben dargestellt kreieren.

Matrix.PNG
 Beschreibung:
Die Textdatei die ich importiere, sieht so dann aus

Download
 Dateiname:  Matrix.PNG
 Dateigröße:  108.9 KB
 Heruntergeladen:  313 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.11.2016, 13:36     Titel:
  Antworten mit Zitat      
Hallo Penguins,
Zitat:
Ungefähr so möchte ich das auch für die Textdatei machen, die ich angehängt habe. Jedoch funktioniert, dass nicht so gut.

Das kann man nicht konkret beantworten. Je präziser die Frage, desto leichter kann man sie beantworten. Was brauchst Du als nächstes?

Gruß, Jan
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 - 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.