假设我有以下矩阵:
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
我是一名优秀的程序员,十分优秀!