2016-09-04 167 views
0

我有一個包含8列和80k行的矩陣。 (來自excel文件)將現有矩陣的值存儲到新矩陣中

每行都有一個ID。

我想存儲所有ID號的數據。 1在一個新的矩陣中。所有ID號爲。 2在第二個矩陣中等等。所以每當一個ID改變時,我想將一個新ID的所有數據保存在一個新的矩陣中。

上面有800多個ID。

我試過好幾件沒有運氣的東西。其中包括:

k = zeros(117,8) 
for i =1:80000 
    k(i) = i + Dataset(1:i,:) 
end 

以上只是看我是否真的可以得到保存在另一個矩陣中的前117行沒有成功。

回答

3

如果其中一列包含ID,則可以使用邏輯索引。例如,如果列1包含了ID,我們可以先找到所有不同的ID值的列表:

uniqueIDs = unique(Dataset(:, 1)); 

然後,我們可以創建單元陣列,給定ID的物品清單:

listsByID = cell(length(uniqueIDs), 1); 
for idx = 1:length(uniqueIDs) 
    listsByID{idx} = Dataset(Dataset(:, 1) == uniqueIDs(idx), :); 
end 

運行上面上的示例數據集:

Dataset = [1 0.1 10 
      1 0.2 20 
      2 0.3 30 
      3 0.4 40 
      2 0.5 50 
      2 0.6 60]; 

結果:

1.0000 0.1000 10.0000 
1.0000 0.2000 20.0000 

2.0000 0.3000 30.0000 
2.0000 0.5000 50.0000 
2.0000 0.6000 60.0000 

3.0000 0.4000 40.0000 
+0

一般而言,如此處所述,製作一個單元陣列比多於800個不同的變量更好(更好)。 – EBH

+0

非常感謝你:) – user3161344