有着这样一个txt文件,里面的数据为:
08:10:00 0.5
08:10:02 0.6
08:10:03 0.7
08:10:04 1.6
08:10:05 1.8
08:10:06 22.3
08:10:07 0.5
08:10:08 0.8
08:10:09 1.7
08:10:10 2.2
08:10:11 4.4
08:10:12 6.6
08:10:13 8.6
08:10:14 7.8
08:10:15 6.6
08:10:16 3.3
08:10:17 7.7
08:10:18 8.8
08:10:19 9.8
08:10:20 9.9
08:10:21 10.1
其中左边的某一时刻,右边为每一时刻对应的value。
根据这些数据,可以绘制横坐标为时间,纵坐标为value的图。
画完的图如下所示
可以观察到坐标轴为时间轴,而且横轴上的时间是隔一个才显示(这是为了避免以后如果数据很多的时候,横轴的数据显示可能会重叠的问题,当然你也可以设置成每隔两个或三个等等才显示。)
1.处理txt中的数据
(1)textscan函数 函数详细介绍链接:http://blog.sina.com.cn/s/blog_6c640c790102xbhl.html
textscan函数
功能:读格式的数据从文本文件或字符串。适用于具有多行文字说明文本数据文件。
————————————————————————————————————————
基本用法:
C = textscan(fid, 'format')
C = textscan(fid, 'format', N)
C = textscan(fid, 'format', 'param', value)
C = textscan(fid, 'format', N, 'param', value)
C = textscan(str, ...)
[C, position] = textscan(...)
——————————————————————————————————————
输入参数
fid 为fopen命令返回的文件标识符,这也是和textread的最大不同之处
需要注意的一点是,fid类似一个指针,其指向的位置会随着textscan的操作而改变,参见例9
format 是一个字符串变量,表示读取数据及数据转换的规则,具体见format.txt
N 读取N次,一般为行数
输出参数
输出一个细胞数组C
基本与textread语法相同
fid=fopen('data.txt');
%{
按照HH:MM:SS VALUE的格式读取txt中的时间数据和值数据,T是输出细胞数组
%}
T=textscan(fid,'%d:%d:%d %f');
(2)将数据读取进来后,就需要对时间数据进行处理了
%{
T_rows为数据的个数
%}
[T_rows,~]=size(T{1});
%{
%M是输出数组,其中第一列为其他时间点与初始时间的的时间距离,以S为单位计算
%}
M=zeros(T_rows,2);
M(1,1)=0;
M(1,2)=T{4}(1);
for i=2:1:T_rows
h=T{1}(i)-T{1}(1);
h_s=h*3600;
m=T{2}(i)-T{2}(1);
m_s=m*60;
s=T{3}(i)-T{3}(1);
s_s=s;
sum_s=h_s+m_s+s_s;
M(i,1)=sum_s;
M(i,2)=T{4}(i);
end
2 根据处理后的数据开始画图
Matlab中与时间处理有关的函数 函数介绍链接:https://ww2.mathworks.cn/help/matlab/date-and-time-operations.html
(1)datenum函数 函数详细介绍链接:https://ww2.mathworks.cn/help/matlab/ref/datenum.html
datenum
将日期和时间转换为日期序列值
将表示日期和时间的文本转换为 日期序列值。DateNumber
= datenum(DateString
)
(2)datestr函数 函数详细介绍链接:https://ww2.mathworks.cn/help/matlab/ref/datestr.html
datestr
将日期和时间转换为字符串格式
使用 DateString
= datestr(___,formatOut
)formatOut
指定输出文本的格式。
工程的详细代码已经上传,有需要的童鞋们可以下载 链接:https://download.csdn.net/download/forever_xixi/10654290