首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中根据这种类型的数据创建单元格阵列

如何在Matlab中根据这种类型的数据创建单元格阵列
EN

Stack Overflow用户
提问于 2010-01-18 18:40:42
回答 2查看 1.5K关注 0票数 3

假设我有3个患者,他们的配置文件,但配置文件不具有相同的长度。我的问题是如何根据这些数据创建一个细胞数组(见下文),其中我的细胞数组的每个条目都将对应于一个患者配置文件。谢谢

患者概况

代码语言:javascript
复制
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  
EN

回答 2

Stack Overflow用户

发布于 2010-01-18 20:07:58

使用mat2cell作为引擎。我假设您希望聚合患者配置文件数组的第二列的结果,作为第一列的函数。如果配置文件位于名为PP的数组中:

代码语言:javascript
复制
counts = [6;4;10];
C = mat2cell(PP(:,2),counts)
C = 
    [ 6x1 double]
    [ 4x1 double]
    [10x1 double]

看看这一步已经完成了将数据提取到单独的单元格中的工作。

代码语言:javascript
复制
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的第一列进行排序。因此,我们所要做的就是知道每个患者对应了多少条目。这是accumarray可以处理的任务。

代码语言:javascript
复制
counts = accumarray(PP(:,1),1)
counts =
     6
     4
    10

最后,如果患者标识符的列表比数字(1:3)更复杂,那么调用unique就可以为您解决这个问题。

票数 5
EN

Stack Overflow用户

发布于 2013-05-09 18:40:35

可以将accumarray与自定义函数一起使用

代码语言:javascript
复制
profile = accumarray( {PP(:,1) },  PP(:,2), [], @(x) {x} );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2085370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档