0

重複の可能性:
ファイルの計算

Day              price1          price2

2/2/2000         10                15

3/2/2000         12                18

4/2/2000         14                19

x=day と y=price1 をプロットするにはどうすればよいですか?

file = xlsread('example.xls');

x = file(:,1);

y = file(:,2);


plot(x,y);

2000 年 2 月 2 日の代わりに 0、1、2 の数字が表示されます。

4

3 に答える 3

1

日付文字列を使用xtickして、プロット内のマークにラベルを付けることができます。まず、を使用して、日付番号を日付の刺し傷に変換する必要がありますdatestr

[file, text] = xlsread('example.xls');
x = file(:, 1);
y = file(:, 2);
x0 = datenum(2000, 2, 2);
cal = cellstr(datestr(x + x0));

次に、目盛りをプロットしてラベルを付けることができます。

plot(x, y);
set(gca(), 'xtick', 1 : length(y), 'xticklabel', cal);;
于 2013-01-10T21:36:08.587 に答える
1

x軸に日付を表​​示させる最も簡単な方法は、datetick関数を使用することです。この素晴らしい機能を発見するまで、この質問に対する他の回答が示唆しているように、私は手動でそれを行っていました。

次の例を切り取ってMatlabスクリプトに貼り付け、行ごとに実行します。

y = randn(4, 1); %# Simulate random observations
Dates = {'1/1/2000', '2/1/2000', '3/1/2000', '4/1/2000'}; %# Build a vector of date strings
DatesNum = datenum(Dates, 'dd/mm/yyyy'); %# Convert date strings to date numbers
plot(DatesNum, y); %# Plot the data
datetick('x', 'dd/mm/yyyy'); %# Convert date numbers on plot to string format

最後の行は、基本的に「現在のプロットのx軸上で、フォーマット文字列dd / mm / yyyyを使用して、日付と時刻のフォーマットで数値を表示する」と述べています。

この例がどのように機能するかを理解すると、この例をコードに適合させることができるはずです。

于 2013-01-10T23:36:23.783 に答える
0

使用可能なExcelCOMサーバーがない場合(UNIX / Linuxで実行している場合など)、日付はExcelのシリアル日付番号(整数)として表示されます。これらはMATLABの日付シリアル番号とは異なります。それらはx2mdate()を使用して変換できます:

file = xlsread('example.xls')
file(:,1) = x2mdate(file(:,1))
set(gca,'Xtick',file(:,1),'XTickLabel',datestr(file(:,1)))

ここでは、日付列の日付が文字列ではなく、Excel/LibreOfficeによって日付としてフォーマットされていると想定しています。

于 2013-01-10T21:35:33.330 に答える