2012-03-06 72 views
0

我想要做類似 scatter(timesRefined,upProb) 其中timesRefined是一個單元格數組,其中每個條目都是對應於某個時刻的字符串,例如8:32: 21.122和upProb只是一個與單元陣列長度相同的數字向量。什麼是最簡單的方法來做到這一點?MATLAB - 針對單元陣列繪製矢量

回答

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

您可以使用'datetick('x','HH:MM:SS.FFF')來簡單地調整刻度標籤,而不是修改日期。 – Pursuit 2012-03-07 02:11:37

+0

謝謝@Pursuit,很棒的一點。編輯答案。 – foglerit 2012-03-07 03:06:56

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);