2010-01-18 104 views
3

假設我有3名患者的個人資料,但個人資料不具有相同的長度。我的問題是如何從這些數據創建一個單元陣列(參見下面),其中我的單元陣列的每個條目都將對應一個病人輪廓。由於如何使用這種類型的數據在Matlab中創建細胞陣列

患者檔案

1 2 
1 3 
1 -2 
1 1 
1 3 
1 2 
2 -1 
2 -3 
2 0 
2 -2 
3 2 
3 2 
3 1 
3 3 
3 2 
3 -1 
3 -2 
3 -3 
3 -2 
3 -2 

回答

5

使用mat2cell作爲發動機。我假設您想彙總患者個人資料數組第二列的結果,作爲第一列的功能。如果配置文件是在陣列中稱爲PP:

counts = [6;4;10]; 
C = mat2cell(PP(:,2),counts) 
C = 
    [ 6x1 double] 
    [ 4x1 double] 
    [10x1 double] 

看到,這個步驟已經做了數據提取到獨立單元的工作。

C{:} 
ans = 
    2 
    3 
    -2 
    1 
    3 
    2 
ans = 
    -1 
    -3 
    0 
    -2 
ans = 
    2 
    2 
    1 
    3 
    2 
    -1 
    -2 
    -3 
    -2 
    -2 

如果PP沒有預先排序,我們需要在PP的第一列進行排序。所以我們需要做的是知道每個病人有多少條記錄。這是準馬拉德可以處理的任務。最後,如果患者標識符列表比數字更復雜(1:3),那麼通過調用unique來爲您解決問題。

0

可以使用accumarray用自定義功能

profile = accumarray({PP(:,1) }, PP(:,2), [], @(x) {x});