Matlab画图 横坐标为时间轴

有着这样一个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

猜你喜欢

转载自blog.csdn.net/forever_xixi/article/details/82532951