Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中,如何计算与条件关联的索引值的唯一数量?

我有一个二维矩阵,在第一列中包含实验条件的索引,在第二列中包含相应实验的索引,即[condition experiment] 。每行对应一个有趣的事件(一个实验可以产生一个或多个事件)。

计算条件和事件很容易。我想知道如何计算每种给定条件下有多少个独特的实验。

这是我现在使用ACCUMARRAY的解决方案,但我认为应该有一个更简单或更优雅的解决方案:

idxList = [1 1;... %# There are two experiments for condition 1... 1 2;... 1 2;... 2 1;... %# ...and 1 experiment for condition 2. 2 1]; accumarray(idxList(:,1),idxList(:,2),[],@(x)length(unique(x))) ans = 2 1

回答:

以下是一些替代方案:
  • 使用整个矩阵idxList为subs参数ACCUMARRAY (即指定用于累积行和列索引),然后求和横跨结果的行非零的数目:

    experCounts = sum(accumarray(idxList,1) > 0,2);
  • 首先在idxList上使用UNIQUE删除重复的行,从而简化了对ACCUMARRAY的调用:

    idxList = unique(idxList,'rows'); experCounts = accumarray(idxList(:,1),1);

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 06:44


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.