MATLAB - построение вектора относительно массива ячеек - PullRequest
0 голосов
/ 07 марта 2012

Я хочу сделать что-то вроде scatter (timesRefined, upProb), где timesRefined - это массив ячеек, в котором каждая запись - это строка, соответствующая моменту времени, например 8: 32: 21.122, а upProb - просто вектор чисел стой же длины, что и массив ячеек.Какой самый удобный способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вы можете преобразовать ячейку timesRefined в числовое представление даты с помощью datenum

>> timesRefined = {'8:32:21.122','9:30:54.123'};
>> datenum(timesRefined)
ans =

          734869.355800023
          734869.396459757

Полученное число выражает дату как дни от эпохи. Поскольку вас не интересуют дни, а только время, и если ваши наблюдения содержатся в одном дне, вы можете просто взять дробную часть вывода datenum:

>> datestr(mod(datenum(timesRefined),1))
ans =

 8:32 AM
 9:30 AM

и до scater(mod(datenum(timesRefined),1),upProb)

РЕДАКТИРОВАТЬ:

Как указано Преследование , вы можете напрямую использовать результат datenum в качестве значений x и использовать datetick('x','HH:MM:SS.FFF')

0 голосов
/ 07 марта 2012

strsplit из обмена файлами Matlab должно помочь. Если все значения являются числовыми, вы получите матрицу обратно.

timestr = '8:32:21.122';
timenum = strsplit(timestr,':');
convmat = [60*60; 60; 1];
time_in_seconds = sum(timenum .* convmat);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...