информация о времени усреднения

У меня есть два массива ячеек с информацией о времени:

вот пример:

'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-11'
'2012-05-11'

'19:28:27.000'
'19:28:38.000'
'21:57:31.000'
'21:57:37.000'
'21:57:40.000'
'21:57:43.000'
'21:57:50.000'

Мне просто нужна была информация о двух временах, как будто я уникален:

'2012-05-10'    '19:28:27.000'
'2012-05-11'    '21:57:40.000'

У меня когда-нибудь тоже будет это:

'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'

'19:26:27.000'
'19:26:38.000'
'21:55:31.000'
'21:57:37.000'
'21:55:40.000'

Как мне это сделать.


person nman84    schedule 16.07.2012    source источник
comment
Что ты здесь спрашиваешь? Ваш вопрос немного не ясен   -  person mathematician1975    schedule 16.07.2012
comment
Вы должны предоставить больше контекста и пояснений. Я предполагаю, что записи с одним и тем же индексом в каждом массиве являются частями одной и той же даты и времени. В вашем заголовке говорится, что вам нужно среднее значение, но вы берете минимальное/самое раннее время в данный день (при условии, что в вашем примере вы ошибочно ошиблись на единицу - самое раннее время 11-го числа будет следующей записью)   -  person Mikeb    schedule 16.07.2012
comment
Добавляя к предыдущим комментариям, каков ожидаемый результат? Пожалуйста, предоставьте краткий пример ввода и ожидаемого результата...   -  person Eitan T    schedule 16.07.2012
comment
Ваш вопрос СОВЕРШЕННО не ясен. Что такое ввод? Что такое вывод? В чем проблема?   -  person mwengler    schedule 16.07.2012
comment
Мне нужны были уникальные день и час, минута и секунда не имеют значения из массива.   -  person nman84    schedule 16.07.2012


Ответы (2)


Вы можете сделать это с помощью функции unique:

>> dates = {'01-Jan-2001'; '01-Jan-2001'; '01-Jan-2001'; '02-Jan-2001'};
>> times = {'15:52';'16:03';'17:05';'04:13'};
>> [d idx] = unique(dates);
>> t = times(idx);
>> [d t]
ans = 
    '01-Jan-2001'    '17:05'
    '02-Jan-2001'    '04:13'

Этот метод получает последнее время, связанное с каждой датой. Если вы хотите получить первый раз, вы можете использовать эту функцию:

function [d t] = uniqueDates(dates,times)
[d idx] = unique(flipud(dates));
reversed_times = flipud(times);
t = reversed_times(idx);
person Chris Taylor    schedule 16.07.2012

Преобразуйте строки в vecotrs, используя datevec(), затем отбросьте min и sec и преобразовать обратно в одну строку с помощью datestr(), а затем использовать уникальный()

Вот пример, но я его не проверял:

dates = ['2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-11'
'2012-05-11']

times = ['19:28:27.000'
'19:28:38.000'
'21:57:31.000'
'21:57:37.000'
'21:57:40.000'
'21:57:43.000'
'21:57:50.000']

%this bit might not work, if not just do it with a for loop. It is constructing a vecotr of spaces.
spaces = zeros(size(times,1), 1);
spaces(:) = " ";

%Concatenate the date and time strings with a space character between them.
DateVectors = datevec([dates, spaces, times]);
%discard min and sec
DateVectors(:, 5:6) = 0;
%convert back to strings
DateStrings = datestr(DateVectors);
%find unique values
unique(DateStrings)
person Dan    schedule 16.07.2012