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

XLSX Import mit Spalte dd.mm.yy hh:mm:ss

 

Oorim
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.02.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 24.05.2014, 20:22     Titel: XLSX Import mit Spalte dd.mm.yy hh:mm:ss
  Antworten mit Zitat      
Ahoi

Ich habe ein Problem mit einem Excel File das ich später plotten möchte ... die erste Spalte hat das im Betreff genannte Format dd.mm.yy hh:mm:ss . Der folgende Befehl macht was er soll:
Code:
datestr(load(1,1),'dd.mm.yy')


Auf die Uhrzeit kann ich verzichten, da die Daten von 3 aufeinanderfolgenden Tagen ist ... was nun nicht geht ist, den gesamten Vektor zu konvertieren. Ich habe es mit
Code:
load(:,1)=datestr(load(:,1),'dd.mm.yy');
??? Subscripted assignment dimension mismatch.


und
Code:
load(1)=datestr(load(:,1),'dd.mm.yy');
???  In an assignment  A(I) = B, the number of elements in
B and
 I must be the same.


versucht aber, wie man sehen kann, keinen Erfolg gehabt.

Vielleicht kann mir ja jemand weiter helfen ...?

Grüße

Zuletzt bearbeitet von Oorim am 24.05.2014, 20:56, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2014, 20:39     Titel:
  Antworten mit Zitat      
Hallo,

load ist ein Befehl zum Lesen von .mat-Dateien und sollte daher nicht als Variablenname verwendet werden.

Wenn du die Daten aus Excel bekommst, dann sind sie doch schon Datumsstrings, und da wäre dann datestr nicht sinnvoll. Wenn du die Daten für einen Plot verwenden willst, musst du sie mit datenum umwandeln.

Am besten wäre es, wenn du kompletten Beispielcode (d.h. auch die Entstehung der Variablen) lieferst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Oorim
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.02.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 24.05.2014, 21:01     Titel:
  Antworten mit Zitat      
danke Smile Hab den Variablennamen geändert

Code:
clc
clear all
close all

path='C:\MeinPfad\ValiSensor-Eval\';
fprintf('Path: %s\n', path)

totaldev = xlsread(strcat(path,'totaldev.xlsx'));
plant_load = xlsread(strcat(path,'load.xlsx'));


Ich habe die Datumsstrings in Excel in Zahlen umgewandelt - das fand ich irgendwo in google ... Jedenfalls haben die beiden Tabellen die gleiche Struktur: In Spalte 1 steht der Zeitvektor (2x der gleiche) und in Spalte 2 jeweils die Daten.

Die Datumsspalte sieht nun so aus (Auszug)
Code:
41768,6054282407
41768,6054513889
41768,6054745370
41768,6054976852
41768,6055208333
41768,6055439815
41768,6055671296
41768,6055902778
41768,6056134259
 


Aller weiterer Code den ich hier gepostet habe, hatte ich nur im CMD-Window eingehackt zum testen Rolling Eyes Bin etwas im Stress und unkoordiniert gerade Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2014, 22:54     Titel:
  Antworten mit Zitat      
Hallo,

und nun?
Das Umwandeln in Datumszahlen ist unnötig. Du kannst die Datumsstrings mit xlsread nach MATLAB importieren und datenum verwenden.
Wenn du die Datumsangaben schon umgewandelt hast, kannst du x2mdate verwenden, um von der Excel-Datumskonvention auf die von MATLAB zu wechseln.

Grüße,
Harald

P.S.: auch path ist ein MATLAB-Befehl, und zum Sinn/Unsinn von 'clear all' gibt es diverse Threads.
Private Nachricht senden Benutzer-Profile anzeigen
 
Oorim
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.02.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 24.05.2014, 23:51     Titel:
  Antworten mit Zitat      
Wenn ich die Daten nicht umwandel, also zum Beispiel in der Form 09.05.14 stehen lasse, lädt Matlab die Spalte nicht mit.

Dein Hinweis auf x2mdate() war der richtige. Ich habe dann zwar noch mal schauen müssen wie man die Daten anzeigt, aber dann hat es geklappt:

Code:
clc
clear all
close all

filepath='C:\MeinPfad\ValiSensor-Eval\';
fprintf('Path: %s\n', filepath)

totaldev = xlsread(strcat(filepath,'totaldev.xlsx'));
plant_load = xlsread(strcat(filepath,'load.xlsx'));

data=[plant_load(:,1),plant_load(:,2),totaldev(:,2)];

data(:,1)=x2mdate(data(:,1));

plot(data(:,1),data(:,2))
datetick('x','keepticks','keeplimits');


Da fehlen noch ein paar Kleinigkeiten, aber das ist dann nicht das Problem Smile

Danke Smile


PS: Der Code ist sicher nicht schön. Aber ich hab Jahre nix mit Matlab gemacht und in erster Linie muss er funktionieren, mir die benötigten Bilder produzieren 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 - 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.