-1
[ndata, text, alldata] = xlsread('Euro swap rates.xlsx',3);
%(although created from text dates is still a cell array?) 
dates=text(:,1);  
%(Same problem here)
rates_header=text(1,:);  
rates=ndata;
surf(rates);
colormap(jet);  

>> surf(rates,dates); %but when I try to add wither of the labels I get a problem?
??? Error using ==> surf at 78
X, Y, Z, and C cannot be complex.

>> surf(rates,dates,rates_header);
??? Error using ==> surf at 78
Z must be a matrix, not a scalar or vector.`

我假设问题是因为日期和rates_header 仍然是单元格数组?

如何将它们转换为文本?有没有办法直接作为 xlsread 的一部分?

最后在绘图上,我想创建数组日期和rates_header 中的第一个单元格,即冲浪图的该轴的名称,以及用于填充轴的所有其余数据。

越来越近

title('欧元掉期利率');

xlabel('成熟度');

ylabel('日期');

zlabel('交换率');

设置(gca,'YTick',1:100:长度(日期));

设置(gca,'YTickLabel',日期(1:100:长度(日期)));

设置(gca,'XTick',0:10:长度(rates_header));

设置(gca,'XTickLabel',rates_header(0:10:长度(rates_header)));

剩下两个问题:

  1. 我希望 x Tick 是 1y 然后 10y20y...60y 所以第一步大小是 9y 然后 10y 对于所有剩余的点
  2. 我希望日期仅显示每年 1 月 1 日和 6 月上旬(或最接近这些日期的工作日)。
4

1 回答 1

1

看起来您想在 x 轴上设置标签。

您不是通过 执行此surf操作,而是在使用后执行此操作set,如下所示:

set(axHandle, 'XTickLabel', xlabels);

这是一个完整的例子:

[x  y] = meshgrid(-4:.25:4;);
z = x.^2 + y.^2;
xlab = {'one','two','three','four'};

surf(x,y,z);
set(gca,'XTickLabel', xlab);

您可以使用任何您想要的标签,只要它们是字符串并保存到元胞数组中即可。这就是我在上面所做的xlab

于 2012-10-10T16:08:14.253 回答