2015-04-23 29 views
0

好的,所以我一直在搞什麼應該是一個簡單的問題。我試圖用DD-MM-YY HH:MM:SS(例如:13-Mar-15 07:23:10)格式繪製一個數值數組(double)與相關的時間戳(單元格) )。 我可以使用datetime(time stamp)繪製一套。由於數據的設置,它在x軸上輸出很好的HH:MM。非常好。從datenum轉換回實際時間

現在爲了在同一個圖上繪製2組值,我發現Matlab不喜歡在x軸上使用兩次date_time,所以我去了臭名昭着的datenum函數,它能夠在同一個圖上繪製兩者。然而,這是在時間的序列值,它與我的繪圖大小(即X軸不自動大小)插孔。

什麼應該是一個簡單的問題,實際上已經讓我在將​​「時間戳」轉換爲串行時間之後將互聯網試圖重新轉換回我心愛的HH:MM。

我不認爲代碼示例或數據集應該是必要的例子。 (但可以提供,如果需要)

我試過使用datetick函數,但似乎無法得到它的工作。

+0

兩種解決方案,但我可能會誤解你的問題。 1)爲什麼不對齊時間序列數據,以便它們對齊軸上相同的時間戳? 2)爲什麼不繪製一個2軸座標圖,每組1個? – krisdestruction

回答

0

datenumdatetick的訣竅是在你調用datetick之前設置限制和滴答位置,然後確保它不會重做它們。

所以,對datenums策劃你的兩組數據後,它會去是這樣的:

step = 1/24; % for hourly - adjust to preference 
ticks = datenum('mystarttime'):step:datenum('myendtime') 
set(gca,'XTick',ticks) 
datetick('x','HH:MM','keepticks','keeplimits') 
+0

你們救了我,還有我的公司,無論他們最終還是付了我一個小時!它的作品非常漂亮。非常感謝你的幫助! –

0

我工作了很多時間序列和最經常我繪製我的數據與時間/日期。

MATLAB自從來沒有給我一個明確便捷的解決方案,多年來我現在的工作是這樣的:

我定義一勞永逸Matlab的快捷方式(在MATLAB快捷工具欄): shortcut toolbar

包含以下代碼:

xticktemp = get(gca,'Xtick') ; 
ticklabel = {datestr(xticktemp(1)) datestr(xticktemp(2:end),15) } ; 
set(gca,'Xticklabel',ticklabel) 
clear xticktemp ticklabel 

將我所有的時間與datenum並使用此格式進行工作(或posix時更方便,但它是另一個故事),計算和繪圖。當我需要現在正是在人類可讀的格式事件的時候,我按下快捷鍵,我得到這樣的:

timeticks

當然也有使用這種方法2個主要的侷限性:

  • 這不控制蜱的步驟(它只是複製什麼Matlab的初始設置)
  • 必須重新點擊你的快捷方式,每次刷新刻度標記你縮放或平移數字

由於這些原因,當我需要爲其他人呈現圖片時,我不會使用這個技巧,並且完全像我想要的那樣定義我的蜱蟲,但是當您只是在外面工作時,這個快捷方式節省了我數小時可能甚至是幾天?)過去10年左右擺弄......

相關問題