2017-05-09 104 views
1

我試圖讀取Matlab中的.txt文件,其中包括有關太陽輻射和溫度的月度信息。月份與文本一樣,即1月份,2月份等。然後利用這些信息需要製作一些圖表來顯示每月的信息,例如月度太陽輻射在x軸上有月份。除了需要在相同的圖上繪製兩個圖,因爲我有Matlab 2015b需要使用plotyy。 問題:我認爲從文件中讀取的月份是正確的,但是當我繪製所有月份爲一月份時,我無法正確繪製兩張圖,因爲時間不同。Matlab:如何從.txt文件中正確讀取月份

,使用的代碼是:

fidata = fopen('Asmara-mon2.txt', 'r'); 
    formatSpeci = '%s'; 
    N1 = 9; 
%  h1=('Month' 'Temp' 'Tamin' 'Tadmin' 'Tadmax' 'Tamax' 'RH'); 
    h3 = textscan(fidata,formatSpeci,N1,'Delimiter','|'); 
    asmara_precipitation= textscan(fidata,'%{MM}D %f %f %f %f %f %f %f %f'); 
%  formatIn = 'mm'; 
asmara_precipitation{1}=datenum(asmara_precipitation{1}); 
asmara_precipitation=cell2mat(asmara_precipitation); %% Month| H_Gh| SDm |SDd|SDastr |RR |RD |FF |DD 
[MonthNum, MonthString] = month(asmara_precipitation(:,1)); 

p=find(average_day_radiation(:,1)<10); 
q=find(diff(p)==1); 
idx=[p average_day_radiation(p) average_day_radiation(p,2) average_day_radiation(p,4)]; 
consecutive_idx=[p(q) idx(q,2) idx(q,3) idx(q,4)]; 

% Graphic of bad radiation days 

figure (44) 

hold on 

plotyy(MonthNum,asmara_precipitation(:,7),consecutive_idx(:,1),consecutive_idx(:,2)) 
datetick('x','mmm') 

預先感謝您的任何幫助,並抱歉地問一些可能看起來很可笑。

+0

我假設第一列'Month'不是支持的日期格式。你應該看看month()函數的在線文檔https://www.mathworks.com/help/finance/month.html#inputarg_F –

+0

嘿,謝謝我已經解決了這個問題:)我應該在這裏發佈或只是刪除我的問題? –

回答

0

只要保持最後一行,並添加plot命令上面下面一行:

% The acquisition exact date: 2017-<MonthNum>-01 12:00:00 
MonthNum=datenum(2017,MonthNum,1,12,0,0); 

將在MonthNum轉換成合適的日期,其中datetick就明白了。

+0

謝謝!我使用了命令,它工作! –