2017-01-05 61 views
4

我有一個相當簡單的任務。我只是單純地需要做這樣的事情如何在Matlab中繪製奇怪的時間戳

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

然而,隨着stampy {1:5}我有五個獨立的ANS數據{2}(1:5)似乎是正常的繪圖。我試圖水木清華這樣的

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

但沒有奏效。我不知道,這似乎是一個非常簡單的任務。 任何人都可以提出解決方案嗎? 我在這個形式的數據:

>> 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 

>> data{2}(1:5) 

ans = 

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

好像你還沒有接受任何的答案上***您所有的問題***。花點時間,通過點擊**''** **標記最有用的答案,通過[接受](http://meta.stackexchange.com/a/5235/335102)解決所有問題上的問題。答案的左側將其變成綠色。如果您願意,點擊**'''**,您也可以[upvote the answers](http://meta.stackexchange.com/a/173400/335102)。祝你好運! –

回答

2

如果你想繪製一個時間軸,你可以使用一個datetime類型的變量:

% 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

儘管功能更豐富,但您不需要*使用'datetime'類。像''datetick'](https://www.mathworks.com/help/matlab/ref/datetick.html)這樣的函數早在R2014b中引入'datetime'類之前就已經存在了。 – excaza

+0

@excaza這只是一個錯誤的措辭,我現在改變了。 – EBH

2

只是情節您的數據並按如下所示重命名Xticks:

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

輸出:

output

+0

非常感謝你的建議。 爲我工作!你可能有一個ide如何彎曲時間戳角度? THX >> plot(data {2}(1:5)); >> set(gca,'XTick',1:5,'XTickLabel',{stampy {1:5}}); – user2156115

+0

@ user2156115'set(gca,'XTickLabelRotation',45);'這將旋轉xticks 45°角。 –

+0

>> matlab 使用hg.axes/set的錯誤 名稱'XTickLabelRotation'不是一個可訪問的屬性爲類'軸'的一個實例。 matlab錯誤(第20行) set(gca,'XTickLabelRotation',45); – user2156115

3

您可以使用datenum到每個日期轉換爲日期數,使用這個爲x軸。然後您可以使用datetick指定用於刻度線的格式。這樣做的好處是它可以在任何版本的MATLAB上運行,並且它可以處理非均勻間隔的日期。

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

enter image description here