Как преобразовать соответственно четыре столбца в форматирование даты в MATLAB? - PullRequest
0 голосов
/ 25 августа 2018

Файл Excel (104976x10) содержит большие данные.

  • Столбец: Время (единица измерения)
  • B столбец: Год
  • C столбец: День года
  • D колонка: час
  • E колонка: Минуты
  • и другие, включая значения

Я хотел бы преобразовать столбец, который начинается со столбца B, до столбца E, в формат даты, например «дд / мм / гггг ЧЧ: ММ».

Пример для данных:

1998,41655251   1998    152   1   0   12,5  12,0    11,8    11,9    12,0

Я бы хотел сделать дату вместо 2-го, 3-го, 4-го и 5-го столбцов.

1998,41655251   01/06/1998 01:00    12,5  12,0  11,8  11,9  12,0

или

1998,41655251   01/06/1998 01:00  1998  152   1   0   12,5  12,0    11,8    11,9    12,0

1 Ответ

0 голосов
/ 25 августа 2018

Добро пожаловать на SO.Matlab имеет два типа формата даты:

  1. datetime , представленный в 2014b.
  2. datenum , введенный давно (до2006b), это в основном значение двойной точности, дающее число дней с 0 января 0000.

Я думаю, что лучший способ - использовать дату и время, указав год, месяц, день,значения часов и минут, такие как:

t=datetime(1998,0,152,1,0,0)

t = '01 -May-1998 01: 00: 00 '

Как выможно увидеть, как дни автоматически перетекают в месяцы.Но я заканчиваю 1 мая, а не 1 июня, как в вашем примере.

для изменения формата:

t.Format='dd/MM/yyyy hh:mm'

t = '01 / 05/1998 01: 00 '

чтобы преобразовать его в строку, вы можете просто использовать string(t)

Это пример, который объединяет вышеупомянутые функции для чтения файла xlsx и записывает новую с обновленным столбцом.

data=xlsread('test.xlsx');
S = size(data);
t = datetime(data(:,2),0,data(:,3),data(:,4),data(:,5),0);
t.Format='dd/MM/yyyy HH:mm';
data2=num2cell(data(:,1));
data2(:,2)=cellstr(string(t));
data2(:,3:S(2)-3)=num2cell(data(:,6:end));
xlswrite('test2.xlsx',data2);
...