2014-04-08 59 views
1

我有一个包含2千个时间幅度数据集的excel文件。时间单元是A和振幅细胞是B的数据看起来像这样:如何通过matlab绘制excel中的时间戳数据

2012年2月23日3:12 -69.4

2012年2月23日3:13 -70.3

2 /二千零十二分之二十三3:14 -73.3

2012年2月23日3:15 -75.4

2012年2月23日3:16 -78.1

2012年2月23日3:17 -80.1

如何绘制关于MATLAB中时间戳的幅度值?

回答

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 = 3time_only = falseXTickRot = false

enter image description here

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

enter image description here

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

enter image description here

+0

嗨, 当我绘制它在我的MATLAB readi ng excel文件,我从第一种方法得到: http://tinypic.com/view.php?pic=j8noqt&s=8#.U0SoA71lfDc 看到情节创建了一些黑线而不是日期时间滴答声。 第二种方法绘制此图: http://tinypic.com/view.php?pic=15xqree&s=8 请参阅没有时间标记只是一些整数值。 你的第三种方法绘制了类似于第一种方法的东西+它也显示了一行错误消息:4 这里有什么问题? – user3511734

+0

嗨, 这是我的原始Excel文件。你能告诉我用你的代码绘图的问题是什么? https://drive.google.com/file/d/0ByntE7ZqdSzoNkRhb0p3ckl0Mzg/edit?usp=sharing – user3511734

+0

@ user3511734检出已编辑的代码,并确保您拿起脚本以从[这里]旋转“XTickLabels”( http://www.mathworks.in/matlabcentral/fileexchange/3486-xticklabelrotate) – Divakar