arrays - 在矩阵中查找唯一对

标签 arrays matlab matrix find unique

假设我有以下矩阵:

A = [1 1 2 1;1 2 2 1;2 1 3 0;2 2 2 0;3 1 2 1]

其中第一列是索引,接下来的两列是交互,最后一列是表示是或否的逻辑。 所以知道我想根据交互生成以下热图。 “X”轴代表相互作用,“Y”轴代表指数。

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

我目前的做法:

B = sortrows(A,[2,3]);

然后我分别为每一行和每一列应用查找。

有没有类似unique的函数可以同时检查两列?

最佳答案

这是一种方法,使用 unique(...,'rows'):

A = [1 1 2 1; 1 2 2 1; 2 1 3 0; 2 2 2 0; 3 1 2 1]; % data
[~, ~, jj] = unique(A(:,[2 3]),'rows'); % get interaction identifiers
B = accumarray([A(:,1) jj], A(:,4), [], @sum, NaN); % build result, with NaN as fill value

这给出了

B =
     1   NaN     1
   NaN     0     0
     1   NaN   NaN

关于arrays - 在矩阵中查找唯一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591261/

相关文章:

java - GSON反序列化复杂对象数组

matlab - matlab中最后一列具有最大元素的唯一行

matlab - 将级联分类器从 Matlab 导入到 OpenCV 3.0

python - 在 Python 中读入索引彩色图像

python - 类查找函数python

python - 循环填充Python中的矩阵

android - 如何使用字符串资源命名字符串数组

python - 使用 Tkinter 显示 numpy 数组中的图像

c++ - 定义一个 C 数组,其中每个元素都是相同的内存位置

matlab - 返回除一个矩阵外的所有列