2017-05-15 11 views
0

我想製作時間表。從年份和日期編號制定時間表

以下代碼從一些Excel工作簿的列A和B中提取信息。 A欄爲年,B欄包含事件發生時的日數(當年)。

我的問題是:如何將這與Station1,Station2等相關聯。在Y軸上,在X軸上是多少年?我希望圖表在當天(和正確的一年)在Excel工作表中有數據的地方寫出一個觀點。

num = xlsread('station1.xlsx', 1, 'A:B'); 
num3 = xlsread('station2.xlsx', 1, 'A:B'); 
num4 = xlsread('station3.xlsx', 1, 'A:B'); 
num5 = xlsread('station5.xlsx', 1, 'A:B'); 

示例數據:

num = 2000  193 
     2000  199 
     2000  220 
     2000  228 
     2000  241 
     2000  244 
     2000  250 
     2000  257   
     2016  287 
     2016  292 
     2016  294 
     2016  300 
+0

我們不知道的數據看起來像你的Excel文件... – Wolfie

+0

我明白了。我的Excel有四列數據,但我只需要兩列。我設法提取了我需要的數據(兩個第一列),如我的腳本中所示。如上所述,我只需要幫助就可以繪製這個圖。 – user7981833

回答

0

使用datetimecaldays到年數據的年/日轉換爲實際日期:

dnum = datetime(num(:,1),1,1) + caldays(num(:,2)); 
% dnum = '12-Jul-2000' 
%  '18-Jul-2000' 
%  '08-Aug-2000' 
%  ... 

情節對每一個日期標記線:

hold on % to plot multiple lines 
plot(dnum, 1*ones(size(dnum)), 'x-') % Change the 1 to the y-axis value 
plot(dnum2, 2*ones(size(dnum2)), 'x-') % Line at y=2 with other dates dnum2 
hold off 

輸出(x軸放大,顯示2000年日期):

timelines


如果你的文件被命名爲你的榜樣,那麼你可以用一個循環來替代你的整個代碼避免聲明num變量的負荷,並呼籲plot在許多行:

figure; hold on; 
for ii = 1:5 
    num = xlsread(['station', num2str(ii), '.xlsx'], 1, 'A:B'); 
    dnum = datetime(num(:,1),1,1) + caldays(num(:,2)); 
    plot(dnum, 1*ones(size(dnum)), 'x-'); 
end 
hold off 
+0

非常感謝您的幫助! – user7981833

+0

不用擔心凱西:) – Wolfie

相關問題