如何从excel中绘制时间戳数据
我有一个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的时间戳振幅值?
码
%%// 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 = false
和XTickRot = false
方法2:使用XTickLabel_count = 5
time_only = true
和XTickRot = false
方法3:使用XTickLabel_count = 10
time_only = true
和XTickRot = true