2017-05-09 187 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

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