2014-04-30 109 views
0

我已將單元另存爲Data,Date,Lat,LonuID。有1210個細胞,每個細胞有365或366天。 1210個單元是2008 - 2014年網站的總數(所以有很多重複 - 對於一個網站有2008 - 2014年的數據,它將顯示7次)。每個這些單元中的365或366行是多年來該地點一年的數據。找到值匹配和concatenate到列向量中的位置MATLAB

如何找到日期匹配的索引,並將所有的Data,uID,LatLon連接到列上?現在,Data {i}將有一個站點的數據爲一年,但我想將一天中的數據,經緯度和離線信息合併到單獨的Data,LatLon列中,然後轉到下一個細胞,這將有第二天的信息。這樣,我最終可以通過遍歷列在一天內繪製數據。

樣品幾格的

Data大小1x1210

Data{366}(1:14)尺寸366x1

小樣本:

'8' 
    '10.9' 
    '9.7' 
    '8.9' 
    '10.2' 
    '8.8' 
    '13.5' 
    '6.7' 
    '10' 
    '15.8' 
    '11.6' 
    '12.9' 
    '11.8' 
    '10.2' 

Date{366}(1:14)尺寸相同Data

'01-Jan-2011' 
'02-Jan-2011' 
'03-Jan-2011' 
'04-Jan-2011' 
'05-Jan-2011' 
'06-Jan-2011' 
'07-Jan-2011' 
'08-Jan-2011' 
'09-Jan-2011' 
'10-Jan-2011' 
'11-Jan-2011' 
'12-Jan-2011' 
'13-Jan-2011' 
'14-Jan-2011' 

這將是一個uID。所以uID{366}將是'06 -019-5001'。對於uID{367},日期將是相同的,但Data{367}值會有所不同。

我想找到所有的情況下,Date = '01 -Jan-2011' ,因爲每個uID,會有一個Date = '01 -Jan-2011' 和不同的DataLatLon 。然後,我將它們全部連接到當天的Data列(對於Lat和Lon也是如此,但由於它們的大小相同,所以它將是相同的過程)

+3

一個有一些值和單元格的小例子會很有幫助 –

回答

0

如果所有單元格數組串的單元陣列具有相同的尺寸(包括UID);我將串聯所有的內部細胞成字符串的單元陣列:

Data2 = cat(1,Data{:}); 
Date2 = cat(1,Date{:}); 
... 
uID2 = cat(1,uID{:}); 

然後

idx = strcmp(uID2,'06-019-5001') & strcmp(Date2,'01-Jan-2011'); 
out = Data2(idx); 

也可以創建一個表(在後期的MATLAB版本中)更容易查詢。

+0

問題是我需要最終從地圖上的某天開始繪製所有數據。這將所有內容都放入列向量中,但它是一個又一個的站點。我正在尋找類似於'Data2 {i}'的東西,其中每個i都是包含日期爲2011年1月1日或任何其他日期的所有數據的日子(我最終將Date轉換爲datenum)。 – shizishan

+0

所以你可以做'i = strcmp(Date2,'01-Jan-2011');' – yuk

+0

如果你真的想將數據分組到單元格中,可以試試FileExchange上的GROUP2CELL提交:http://www.mathworks.com/matlabcentral/fileexchange/11192-group2cell使用Date2作爲組。 – yuk