MATLAB - 绘制针对单元格数组的向量

时间:2012-03-06 22:07:32

标签: matlab plot

我想做点什么    scatter(timesRefined,upProb) 其中timesRefined是一个单元数组,其中每个条目是一个对应于时刻的字符串,例如8:32:21.122,upProb只是一个数字向量,与数组的长度相同。最方便的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以将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)

编辑:

正如Pursuit所指出的,您可以将datenum的结果直接用作x值并使用datetick('x','HH:MM:SS.FFF')

答案 1 :(得分:0)

strsplit from the Matlab file exchange应该有所帮助。如果所有值都是数字,您将得到一个矩阵。

timestr = '8:32:21.122';
timenum = strsplit(timestr,':');
convmat = [60*60; 60; 1];
time_in_seconds = sum(timenum .* convmat);