-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.`

問題は、dates と rates_header がまだセル配列であるためだと思いますか?

それらをテキストに変換するにはどうすればよいですか? xlsread の一部として直接行う方法はありますか?

最後に、プロットで、配列の最初のセルに日付と rate_header を作成します。これは、サーフ プロットのその軸の名前であり、残りのすべてのデータが軸の入力に使用されます。

近くなってる

title('ユーロスワップレート');

xlabel('成熟度');

ylabel('日付');

zlabel('スワップレート');

set(gca, 'YTick', 1:100:長さ(日付));

set(gca, 'YTickLabel', 日付(1:100:長さ(日付)));

set(gca, 'XTick', 0:10:length(rates_header));

set(gca, 'XTickLabel', rates_header(0:10:length(rates_header)));

2 つの質問が残っています。

  1. xティックを1y、次に10y20y ... 60yにしたいので、残りのすべてのポイントの最初のステップサイズが9y、次に10yになるようにします
  2. 毎年 1 月 1 日と 6 月 1 日のみ (またはそれらの日付に最も近い営業日) を日付に表示したいと思います。
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 に答える