1

我已经搜索了几个小时的各种论坛,但似乎不可能在 Matlab 中做一个在 excel 中自动执行的事情......我使用 uiimport 将一个 xls 文件导入到两个数组中(?总新手),一个包含我的 x- 的日期轴和其他我要绘制的值。

我有 180 个值。这些日期是每月三个日期,或多或少从 2008 年 5 月到现在,3 月底。

使用

情节(我的数字)

设置(gca,'XTickLabel',日期)

仅将 2008 年 5 月的日期放在我的 x 轴上!其他日期都去哪儿了?

而是使用

情节(我的数字)

设置(gca,'XTick',我的号码,'XTickLabel',日期)

给出错误消息“???错误使用==>设置值必须单调递增。”

请帮忙!

4

2 回答 2

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));
于 2013-04-02T20:15:46.623 回答
0

try set (gca,'XTickLabel',num2str(dates))

于 2013-08-13T22:29:44.763 回答