0

シリアル日付として時間を設定しています。各数値は、20100101 から 20130611 までの順番で 1 日に対応しています。シリアル日付を月-年の形式の日付に変換するにはどうすればよいですか? データをプロットし、日付を表示するために x 軸が必要なため、これが必要です。

ありがとう!

4

2 に答える 2

2

最初のステップは、日付形式を標準の Matlab 日付形式のいずれかに変換することです。プロットに使用する最適な形式は「シリアル日付形式」です。数字自体は、「0/0/0000 からの経過日数」を表しているため、少し厄介です。これは膨大な数です。また、この日付は実際には存在しなかったため、紀元前の日付を操作したい場合は非常に奇妙になります。

ただし、この形式では日数もカウントされるため、変換は簡単ですが、2009 年 12 月 31 日以降もカウントされます。次を使用してこれを変換できます。

numeric_date_vec = datenum(2009, 12, 31) + x;

次に、次を使用してデータをプロットします

plot(numeric_date_vec, y)

を呼び出して、Matlab に日付ティックを自動的に追加させます。

datetick('mmm yyyy')

問題は、ズームイン後に目盛りが更新されないことです。次のいずれかを呼び出すことができます

datetick('mmm yyyy','keeplimits')

もう一度、各ズームまたはパンの後、またはMatlab ファイル交換datetickzoomからダウンロードします。datetick と同じ引数を取りますが、zoom 関数にフックし、目盛りを自動的に更新します。

編集:

場合によっては、dateticks の間隔が適切でない場合があります。その場合は、適切な位置に収まるまで少し拡大または縮小してみるか、手動で目盛りを設定する必要があります。

% Set ticks to first day of the months in 2010
tick_locations = datenum(2012,[1:12],1);
% Set ticks on x-axis
set(gca, 'XTick', tick_locations)
% Call datetick again to get the right date labels, use option "keepticks"
datetick('mmm yyyy','keeplimits', 'keepticks')

tick_locations = datenum(2012,[1:12],1)必要なティックを取得するには、少し変更する必要がある場合があります。たとえば、次のように使用できます。

tick_locations = datenum(2012,[1:2:25],1)

2012 年 1 月から 2013 年 1 月までの 2 か月ごとに取得します。

于 2013-06-21T18:42:21.910 に答える
0

日番n利用の場合

datestr(datenum(2009, 12, 31) + n, 'yyyy-mm')

例えば

>> datestr(datenum(2009, 12, 31)+365, 'yyyy-mm')
ans =
2010-12

>> datestr(datenum(2009, 12, 31)+366, 'yyyy-mm')
ans =
2011-01
于 2013-06-21T18:25:43.050 に答える