我有72x7双重称为 P ,如下所示:
1 45 2 61 7 1 11
1 32 6 23 64 1 32
2 55 32 25 90 3 24
2 45 6 6 16 3 1
2 45 4 17 20 3 1
...
3 87 24 43 71 3 41
5 64 8 66 75 98 1
我感兴趣的两个栏目是 1 和 6 。让我们在第1列 m 中调用一个值,在第6列中调用值 n 。 m 范围从1-6, n 范围从1到3或4.我想计算具有 m <的特定组合的行数/ strong>和 n 。我们将此值称为 x 。例如,在此示例中,如果 m = 1 且 n = 1 , x 将为2,因为有两行 m = 1 AND n = 1 (第1行和第2行)。如果 m = 2 AND n = 3 , x 将为3(第3,4和5行)。 我打算做一个循环,像这样:
for m=1:6
for n=1:a % a could be either 3 or 4
x = (operation done here)
end
end
我尝试了数字和独特的功能,但都没有给我正确的答案。有人能帮助我吗?
谢谢,
亚历
答案 0 :(得分:5)
假设正整数值,则使用sparse
来产生所需的结果。输出格式与Divakar's answer中的一样:
[ii, jj, kk] = find(sparse(P(:,1), P(:,6), 1));
result = [ii jj kk];
答案 1 :(得分:4)
一种方法 -
%// Get columns 1 and 6 from input matrix, P
P16 = P(:,[1 6])
%// Get unique row combinations and their IDs
[unqrows,~,idx] = unique(P16,'rows')
%// Get the counts for each combination
counts = accumarray(idx(:),1) %// Or histc(idx,1:max(idx))
%// Present the output
out = [unqrows counts]
因此,P为 -
P = [1 45 2 61 7 1 11
1 32 6 23 64 1 32
2 55 32 25 90 3 24
2 45 6 6 16 3 1
2 45 4 17 20 3 1 ]
我们将输出为 -
out =
1 1 2
2 3 3
因此,在输出中,第一列代表m
,第二列代表n
,最后一列代表预期的数量。