如何用matlab绘制excel的时间戳数据

时间:2014-04-08 16:02:37

标签: excel matlab date plot timestamp

我有一个包含2千个时间与幅度数据集的excel文件。时间单元格为A,振幅单元格为B.数据如下:

2/23/2012 3:12 -69.4

2/23/2012 3:13 -70.3

2/23/2012 3:14 -73.3

2/23/2012 3:15 -75.4

2/23/2012 3:16 -78.1

2/23/2012 3:17 -80.1

如何在MATLAB中绘制相对于时间戳的幅度值?

1 个答案:

答案 0 :(得分:0)

<强>代码

%%// FILENAME
filename = 'sid.xls';

%%// OPTION 1: If there is a lot of data, XTickLaabels and XTicks would clutter up.
%%// To Avoid that, define the number of XTickLabels needed, 
%%// otherwise set it as NaN to use all x-data.
XTickLabel_count = 3;

%%// OPTION 2:  If you would like to show the time only with dates
time_only = false;

%%// OPTION 3:  If you would like to show the XTickLabels as 90 degrees rotated
XTickRot = false;

%%// Read in data
[num,text1,raw] = xlsread(filename);

%%// Account for 12AM times, which are not read in text1. Append that data.
split1 = regexp(text1,'\s','Split');
zero_times = cellfun(@numel, split1)==1;
text1(cellfun(@numel, split1)==1) = mat2cell([char(text1(zero_times)) repmat(' 00:00:00',nnz(zero_times),1)],ones(1,nnz(zero_times)));

%%// Get the time only data without dates
split1 = regexp(text1,'\s','Split');
split_text = vertcat(split1{:});
time_text = split_text(:,2);

%%// Use the time only data for XTickLabels
if time_only
    text1 = time_text;
end

%%// Select few XTickLabels from the entire X-data or whole respectively
%%// and store as text2
if ~isnan(XTickLabel_count)
    XTickIntv = round(numel(text1)/XTickLabel_count);
    text2 = cell(size(text1));
    text2(1:XTickIntv:end)=text1(1:XTickIntv:end);
else
    text2 = text1;
end

%%// Plot
figure,plot(num)
set(gca, 'XTickLabel',text2, 'XTick',1:numel(text2))
if XTickRot
    xticklabel_rotate([],90,text2);
end
set(gca, 'Ticklength', [0 0]) %%// Remove XTicks but keep XTicklabels

return;

注意:此代码使用XTICKLABEL_ROTATE from Mathworks File-exchange

方法1:使用XTickLabel_count = 3 time_only = falseXTickRot = false

enter image description here

方法2:使用XTickLabel_count = 5 time_only = trueXTickRot = false

enter image description here

方法3:使用XTickLabel_count = 10 time_only = trueXTickRot = true

enter image description here