matlab - 使用 SUM 和 UNIQUE 计算矩阵子集中值的出现次数

标签 matlab sum unique

因此,假设矩阵如下:

20 2
20 2
30 2
30 1
40 1
40 1

我想计算第 1 列的每个唯一值出现 1 的次数。我可以通过 [sum(x(1:2,2)==1)] 对每个值进行长时间的计算,但是我认为这将是 UNIQUE 功能的完美用途。我该如何修复它才能得到这样的输出:

20 0
30 1
40 2

抱歉,如果解决方案看起来很明显,我对循环的把握很差。

最佳答案

确实独特是一个不错的选择:

u=unique(x(:,1))
res=arrayfun(@(y)length(x(x(:,1)==y & x(:,2)==1)),u)

拆开最后一行:

  1. arrayfun(fun,array) 将 fun 应用于数组中的每个元素,并将其放入一个新数组中并返回。
  2. 这个函数是函数 @(y)length(x(x(:,1)==y & x(:,2)==1))条件 x(:,1)==y & x(:,2)==1) 成立的 x 部分(称为逻辑索引)。因此,对于每个唯一元素,它会在 X 中找到第一个是唯一元素,第二个是一个的行。

关于matlab - 使用 SUM 和 UNIQUE 计算矩阵子集中值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790015/

相关文章:

r - 如何从 r 中的数据框中的 2 列中提取唯一级别

r - 矩阵乘法向量 - R 与 Matlab

java - 如何在 Java 中根据 2 个对象属性对唯一列表进行排序

matlab - 在 MATLAB 中模拟 1,000 个几何布朗运动

mysql - 关于订单类型(购买/返回)的最多订单的 SQL 查询?

mysql - 使用多个 LEFT JOIN 时,COUNT 和 SUM 会相乘

javascript - 多维数组之和javascript

MySQL 对唯一值的约束

c# - 如何设置包含 C# 文件、MySQL 和 MATLAB 文件的项目

Matlab/Octave加法,丢失精度数字