1。如何正确读取此数据以使日期正确解析? 我试图连接我从文件中读取的字符串,但我得到的输出混淆了。 输出是x轴。另外,x轴的间距有数字而不是我想要的字符串。 该文件有4列,日期,时间,温度和值。 日期是“01.01.2013”,时间是“09:08:02”
另外,如果我只想使用第一列(带日期),我该怎么办? 因为使用datenum(mydata {1})会导致“无法解析日期01.01.2013”
...
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1);
date={};
temp={};
..
date{1}=datenum( strcat(mydata{1},{' '},mydata{2}) );
...
2。如何更正轴刻度?
然后我尝试使用plotyy绘制数据并希望x轴是日期,但我得到两个不同的轴标签。
以下是我正在使用的代码:
temp = mydata{4};
plotyy(date,temp,date,2*temp);
datetick('x','mmm.dd,yyyy');
以下是生成的图像:
--------------- UPDATE ------------------------------- --------
以下是代码:
fid = fopen('test2.txt','r');
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1);
fclose(fid);
date=datenum( strcat(mydata{1},{' '},mydata{2}),'mmm.dd,yyyy HH:MM:SS' );
temperature=mydata{3};
value=mydata{4};
[AX,H1,H2]=plotyy(date,temperature,date,value,'plot');
set(get(AX(1),'Ylabel'),'String','Temperatures');
set(get(AX(2),'Ylabel'),'String','Value');
set(H1,'LineStyle','--');
set(H2,'LineStyle',':');
datetick(AX(1),'x','mmm.dd,yyyy');
title('Temperatures - Values');
xlabel('Date')
和文件
Date;Time;Temp;value
Jan.01,2013; 11:00:00;20;10
Feb.08,2013; 12:00:00;23;11
Mar.04,2013; 04:02:00;24;15
Apr.10,2013; 08:04:00;28;20
May.10,2013; 12:05:00;32;30
Jun.04,2013; 10:06:0;33;27
答案 0 :(得分:1)
<强> 1。解析输入
您收到“无法解析”错误,因为您还没有包含格式字符串(formatIn)。请参阅datenum的文档。
如果您只想将第一列转换为日期,则显示如下:
date=datenum(mydata{1},'mm.dd.yyyy');
如果要转换第一列和第二列,请尝试:
date=datenum( strcat(mydata{1},{' '},mydata{2}),'mm.dd.yyyy HH:MM:SS');
这是我正在运行的整个代码,这似乎有效。请注意,我的数据文件中没有标题行。
% data.txt
% 01.01,2013; 11:00:47;10;20
% 01.02,2013; 11:00:57;10;40
fid = fopen('data.txt');
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';');
date=datenum( strcat(mydata{1},{' '},mydata{2}),'mm.dd,yyyy HH:MM:SS');
<强> 2。获得正确的情节
plotyy命令有两个不同的x-ticks。通过以您的方式设置datetick,您只需更改其中一个。相反,将第一个x-tick更改为日期刻度并将第二个x-ticks设置为空。
temp = mydata{4};
[AX,H1,H2] = plotyy(date,temp,date,2*temp);
datetick(AX(1),'x','mmm.dd,yyyy');
set(AX(2),'XTick',[])