2017-01-05 4 views
4

plotten Ich habe eine ziemlich einfache Aufgabe. Ich brauche nur einfach etwas wie dieWie komische Zeitstempel in Matlab

plot(stampy{1:5},data{2}(1:5)) 

jedoch zu tun, mit stampy {1: 5} Ich habe fünf separate am und Daten {2} (1: 5) scheint in Ordnung zu sein zum Plotten. Ich habe versucht zu Schleife smth wie die

cc=zeros(1,10); 
for i=1:10 
    cc(i) = stampy{i} 
end 

Aber es hat nicht funktioniert. Ich weiß nicht, es scheint eine sehr einfache Aufgabe zu sein. Kann jemand die Lösung vorschlagen? Ich habe Daten in dieser Form:

>> stampy{1:5} 
ans = 
21-Sep-2016 05:52:00 
ans = 
21-Sep-2016 05:53:00 
ans = 
21-Sep-2016 05:54:00 
ans = 
21-Sep-2016 05:55:00 
ans = 
21-Sep-2016 05:56:00 

und

>> data{2}(1:5) 

ans = 

    -32.3750 
    -25.0000 
    -25.0000 
    -25.0000 
    -25.0000 
+2

Es scheint, wie Sie eine der Antworten auf *** alle Fragen *** nicht akzeptiert haben. Nehmen Sie sich etwas Zeit und markieren Sie die hilfreichste Antwort, die Ihr Problem bei allen Ihren Fragen löst [accepted] (http://meta.stackexchange.com/a/5235/335102), indem Sie auf ** '✓' ** klicken die linke Seite der Antwort, um sie grün zu machen. Sie können auch [upvote die Antworten] (http://meta.stackexchange.com/a/173400/335102), wenn Sie möchten, klicken Sie auf ** '▲' **. Viel Glück! –

Antwort

2

Wenn Sie eine Zeitachse darstellen möchten, können Sie einen datetime Variablentyp verwenden können:

% the following line converts stampy to a time vector: 
sy = datetime(stampy,'InputFormat','dd-MMM-yyyy HH:mm:ss'); 
plot(sy,data{2}(1:5)) 
+1

Obwohl es sicherlich mehr Funktionen bietet, brauchen Sie * die * datetime-Klasse nicht zu benutzen. Funktionen wie ['datetick'] (https://www.mathworks.com/help/matlab/ref/datetick.html) existierten lange bevor die Klasse' datetime' in R2014b eingeführt wurde. – excaza

+0

@excaza das war nur eine schlechte Formulierung, ich habe es jetzt geändert. – EBH

2

Gerade Grundstück Ihre Daten und benennen Sie die Xticks wie folgt um:

plot(data{2}(1:5)); 
set(gca,'XTick',1:5,'XTickLabel',{stampy{1:5}}); 

Ausgang:

output

+0

Vielen schätzen Sie beide von Ihnen. arbeitete für mich !!! Haben yogyus vielleicht eine Idee, wie man Zeitschrittwinkel verbiegt? THX >> Plot (Daten {2} (1: 5)); >> set (gca, 'XTick', 1: 5, 'XTickLabel', {stampy {1: 5}}); – user2156115

+0

@ user2156115 'set (gca, 'XTickLabelRotation', 45);' Dadurch werden die Xticks um einen Winkel von 45 gedreht. –

+0

>> matlab Fehler bei der Verwendung von hg.axes/set Der Name 'XTickLabelRotation' ist keine zugängliche Eigenschaft für eine Instanz von Klassenachsen. Fehler in Matlab (Zeile 20) gesetzt (gca, 'XTickLabelRotation', 45); – user2156115

3

können Sie datenum verwenden jeweils um Ihre Daten zu einem Zeitpunkt Zahl zu konvertieren und diese als die x-Achse verwenden. Sie können dann datetick verwenden, um das für Ihre Teilstriche zu verwendende Format anzugeben. Dies hat den Vorteil, dass es auf den meisten Versionen von MATLAB funktioniert und ungleiche Daten verarbeitet.

plot(datenum(stampy), data{2}(1:5)) 
datetick('x', 'HH:MM:SS') 

enter image description here