2016-09-10 5 views
1

Ich bin ziemlich neu in Matlab und habe daher einige Probleme im Zusammenhang mit dem Importieren von Daten.Datum String zum Datum

Ich möchte BIP-Daten importieren und es dann auf Zeit grafisch darstellen. Ich konnte es importieren und in Zeichenfolgedaten übersetzen. Jetzt möchte ich es zurück in meine Zielmatrix konvertieren. Ich sehe jedoch nur Werte 48 oder 49 in meiner Zielmatrix. wie folgt

Mein Code ist:

AUSGDP = zeros(228,2); 
    GDP = xlsread('AUDGDP.xlsx'); 
    GDP = GDP(1:228,1) + 693960; 
    datestring = datestr(GDP,'mm/yyyy'); 
    AUSGDP(228,1) = datestring(228,1) 

Die angezeigten Daten (direkt nach xlsread('AUDGDP.xlsx') irgendwie sieht wie folgt aus:

Date | % Change 
------|--------- 
21794 | 0 
21885 | 1.300000 
21976 | 1.500000 
22068 | 1.400000 
+1

Können Sie bitte ein ausführbares Beispiel posten? (Ersetze 'GDP = xlsread ('AUDGDP.xlsx');' mit einigen der gelesenen Daten (zB 'BIP (1) = 123; BIP (2) = 456;' ...). – Rotem

+0

Ich werde bearbeiten es oben –

Antwort

0

Der Grund, warum Sie 48 oder 49 erhalten, liegt daran, dass Datestring (228, 1), geben Sie den Wert des ersten Zeichens in der Zeichenfolge zurück
Das erste Zeichen von '09/2016 'ist' 0 'und' 0 'ist 48 (in ASCII)

Beispiel:
s = '09/2016'
s(1) entspricht '0'.
In Doppel konvertieren: double(s(1)) gleich 48.

Ich nehme an, Sie wollten den Monat als Zahl (im Gegensatz zu Zeichenfolge) nehmen.

Eine Möglichkeit ist, die Faust zwei Zeichen zu bekommen, und konvertieren string (Nummer) zu verdoppeln:
s = '09/2016'
month_str = s(1:2); % month_str = '09'
month_num = str2num(month_str) %Convert string to number.

Statt datestr Funktion verwenden, können Sie datevec verwenden.
datevec Datum und Uhrzeit in Vektor der Komponenten konvertieren (alle Komponenten sind Zahlen, keine Zeichenfolgen).
datevec('09/2016', 'mm/yyyy')
Return: 2016 9 1 0 0 0

Falls Sie nur den Monat benötigen, können Sie verwenden:
[~, m, ~, ~, ~, ~] = datevec('09/2016', 'mm/yyyy')
Das Ergebnis ist m = 9

In Ihrem Code können Sie es verwenden, wie folgt:

AUSGDP = zeros(228,2); 
GDP = xlsread('AUDGDP.xlsx'); 
GDP = GDP(1:228,1) + 693960; 
datestring = datestr(GDP,'mm/yyyy'); 
%AUSGDP(228,1) = datestring(228,1) 
[~, m, ~, ~, ~, ~] = datevec(datestring, 'mm/yyyy'); %m is months column as numbers. 
AUSGDP(228,1) = m;