他のすべての日付はどこに行きましたか?
最初の質問に対する答えは、MATLAB は x 軸の目盛りの既定の N 個に対応する最初の N 個の文字列のみを使用するということです。
"??? Error using ==> set 値は単調に増加する必要があります。"
エラーは、日付の目盛りを等間隔にする必要があることを示しています。実際のデータ ポイントに対応する日付を使用する代わりに、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
そのため、File Exchange で使用することをお勧めします。
Excel の日付のセル配列を数値配列に変換する際に問題が発生した場合は、次を使用します。
dateNumeric = cell2mat(cellfun(@datenum,dateStrings,'UniformOutput',false));