Чтение меток времени MATLAB

Любой простой способ прочитать все столбцы в MATLAB?

мой формат

date  time    y1   y2  y3   y4 .........................      
4/27/2010  00:3:09   34  45  45 56 ................     

так далее... В настоящее время я читаю их с кодом:

[c,pathc]=uigetfile({'*.txt'},'Select the data','C:\Data');    
file=[pathc c];     
data= dlmread(file, ',', 1,3);    

поэтому само собой разумеется, что я пропускаю временные метки.

Мне было интересно, есть ли простой способ прочитать метки времени и построить другие столбцы со временем в часах.

мои файлы 43200 X 30, а некоторые 86400 X 90

Связанный вопрос: одинаков ли формат для файлов .csv и .xls, я имею в виду, кроме, конечно, xlsread


person Paul    schedule 28.04.2010    source источник


Ответы (2)


Я уже ответил на ваш вопрос о тех же данных здесь: пропустить заголовки чтения в MATLAB< /а>

[c,pathc]=uigetfile({'*.txt'},'Select the data','C:\Data');
file=[pathc c];
A = importdata(file, ' ', 1);
dt = datenum(A.textdata(2:end,1),'mm/dd/yyyy');
tm = datenum(A.textdata(2:end,2),'HH:MM:SS');
tm = dt+tm-datenum('0:0','HH:MM'); %# combine date and time and correct for zero time.
data = A.data;

Вы можете сопоставить свои данные с tm и использовать DATETICK. функция для отображения даты в любом формате.

plot(tm,data)
datetick('x','HH')
xlabel('Time, hours')

ИЗМЕНИТЬ

Вы также можете использовать решение Джонаса для предыдущего вопроса, чтобы прочитать данные. Затем сделайте то же самое, что и выше:

dt = datenum(dateAndTimeCell(:,1),'mm/dd/yyyy');
tm = datenum(dateAndTimeCell(:,2),'HH:MM:SS');
tm = dt+tm-datenum('0:0','HH:MM');

plot(tm,dataArray,'o-')
datetick('x','HH')
xlabel('Time, hours')
person yuk    schedule 28.04.2010
comment
я получаю целую кучу ошибок, и я не понимаю их ??? Ошибка при использовании ==› dlmread at 145 Несоответствие между файлом и строкой формата. Ошибка чтения номера из файла (строка 1, поле 5) ==> :00:0 Ошибка в ==> dlmread at 90 result= dlmread(filename,delimiter,r,0); Ошибка в ==> testwith_timestamps в 45 data= dlmread(file, ',', 1); ??? Ошибка при использовании ==> importdata в 199 Невозможно загрузить файл. - person Paul; 28.04.2010
comment
Используйте TEXTSCAN или FREAD для более сложных форматов. Ошибка в ==> testwith_timestamps в 49 A = importdata(file, ' ', 1); Причина: ошибка при использовании аргументов CAT ==> vertcat. Размеры несовместимы. - person Paul; 28.04.2010
comment
Я использовал тот же код, что и ваш, после моей команды uiget за вычетом dlmread, который я использовал, поскольку ваш код импортирует данные - person Paul; 28.04.2010
comment
Вы не можете использовать dlmread для чтения нечисловых данных. Даты на самом деле являются строками в файле. И используйте пробел в качестве разделителя, а не запятую. С dlmread вам нужно пропустить не только одну строку, но и 2 левых столбца. - person yuk; 28.04.2010
comment
Это все еще дает мне ошибки datenum ??? Ошибка при использовании ==› datenum в 174 DATENUM не удалось. Ошибка в ==> testwith_timestamps в 51 dt = datenum(A.textdata(2:end,1),'mm/dd/yyyy'); Причина: ошибка при использовании ==› dtstr2dtnummx Ошибка при преобразовании строки даты в число даты. - person Paul; 28.04.2010
comment
Вы уверены, что все строки имеют одинаковый формат? Какие-то недостающие данные? Проверьте переменную A после importdata. - person yuk; 28.04.2010
comment
Есть ли у вас повторяющиеся заголовки, как вы описали в предыдущем вопросе? - person yuk; 28.04.2010
comment
Они имеют одинаковый формат и не содержат недостающих данных. также я сомневаюсь, что смогу использовать это, поскольку я сравниваю данные за разные даты, и каждый файл имеет длину около 50 МБ. Таким образом, он просто падает. Я проверил и выбрал файлы, у которых нет повторяющихся заголовков. Это еще одна проблема, и я не включаю ее здесь - person Paul; 28.04.2010
comment
Я отредактировал ответ. Проверьте, поможет ли другое решение. Вы уверены, что формат дат всегда правильный и соответствует операторам datenum? - person yuk; 28.04.2010

Я считаю, что sscanf поможет вам.

person neuroguy123    schedule 28.04.2010