Если ваш файл данных имеет указанный выше формат, вы можете использовать TEXTSCAN для чтения данных:
fid = fopen('data.txt','rt');
C = textscan(fid,'%s %s %s %d','Delimiter','.','CollectOutput',1);
fclose(fid);
Первая ячейка C
будет содержать массив строк размером N × 3 (части даты), а вторая ячейка C
будет содержать вектор измерений данных N × 1. , Вы можете создать номер даты для каждого измерения, сначала объединяя 3 меньшие строки в одну строку даты, а затем используя функцию DATENUM :
t = datenum(strcat(C{1}(:,3),'-',C{1}(:,2),'-',C{1}(:,1)));
data = C{2};
Если у вас есть вектор чисел даты t
, соответствующий вашему вектору измерений data
, вы можете построить их:
plot(t,data,'*'); %# Plot the points as asterisks
Теперь вы можете изменить метки оси X, чтобы показать фактические даты. Один из вариантов - использовать функцию DATETICK , простое и элегантное решение, приведенное в ответе Стивена . Другой вариант - использовать функцию DATESTR , чтобы создать метки самостоятельно, затем изменить XTick и XTickLabel свойства текущих осей:
xpts = min(t):max(t); %# Make a full vector, filling in missing dates
set(gca,'XTick',xpts,'XTickLabel',datestr(xpts)); %# Set axes properties
ПРИМЕЧАНИЕ: Какой бы вариант вы ни выбрали для изменения надписей оси x на строки дат, вы можете столкнуться с проблемами, если надписи перекрывают друг друга, если метки слишком близки друг к другу. Это можно исправить, уменьшив или переместив метки вдоль оси x (изменив свойство XTick ) или отрегулировав оси FontSize собственность. Если вы хотите повернуть метки, чтобы они поместились, вам нужно стереть метки и создать для них новые повернутые текстовые объекты . Следующая запись на MathWorks File Exchange делает именно это: