2010-01-18 66 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});