我一直在搜索各种论坛几个小时,但似乎不可能在matlab中做一个自动的excel ... 我使用uimport将xls文件导入到两个数组中(?total newbie),一个包含我的x轴的日期,另一个包含我想要绘制的值。
我有180个值。这些日期是每月三个日期,或多或少从2008年5月到现在,3月底。
使用
积(通过myNumbers)
集(GCA, 'XTickLabel',日期)
仅在我的x轴上放置2008年5月的日期! 所有其他日期都去了哪里?
改为使用
积(通过myNumbers)
集(GCA, 'XTICK',通过myNumbers, 'XTickLabel',日期)
给出错误消息 “???使用==>设置错误 价值必须单调增加。“
请帮忙!
答案 0 :(得分:1)
所有其他日期都去了哪里?
第一个问题的答案是MATLAB只使用与x轴上默认N个刻度标记对应的前N个字符串。
“???使用==>设置错误值必须单调递增。”
错误告诉您日期标记必须均匀分布。您可以获取MATLAB自动分配给图表的x刻度值,将其转换为文本,然后将日期重新分配为x刻度标签,而不是使用与实际数据点对应的日期,如下所示:
% generate example unevenly spaced date vector
time = [now,now+1,now+25,now+28.5,now+36,now+40,now+51,now+65];
% generate random data points
data = rand(size(time));
% plot time vs data, storing the axes handle in the process
figure;
axH = axes;
plot(axH,time,data)
% get the x-axis tick locations
ticLoc = get(axH,'XTick');
% format tick labels (substitute any date format you wish)
ticLab = cellfun(@(x) datestr(x,'mm/dd'),num2cell(ticLoc),'UniformOutput',false);
% apply tick labels
set(axH,'XTickLabel',ticLab)
MATLAB的内置函数datetick
的表现也相似。
但是,如果之后进行缩放,则不会有准确的刻度标签。因此,您可能希望在文件交换中使用datetick2
。
如果您在将Excel的单元格数组转换为数字数组时遇到问题,请使用:
dateNumeric = cell2mat(cellfun(@datenum,dateStrings,'UniformOutput',false));
答案 1 :(得分:0)
尝试set (gca,'XTickLabel',num2str(dates))