我有'M'个用户,每个案例都有两个不同的N1和N2特征值。 IE:A是Mx1向量,用于指定每个用户的性别('F','M'}(N1 = 2),B是Mx1向量,用于指定用户居住的大陆{'ASIA','AFRICA' ,'美国'等}(N2 = 6)。 我想创建一个N1xN2(2 * 6)矩阵,它给出了每个性别和大陆组合的用户数量,而不使用for循环。 我试过这段代码:
bsxfun(@eq,A,unique(A)')'*bsxfun(@eq,B,unique(B)')
但这不是我需要的。
提前致谢。
PS:我不需要值的笛卡尔积,我需要一个矩阵来计算每个组合的元素。
答案 0 :(得分:0)
您需要accumarray
:
[~,~,ia] = unique(A);
[~,~,ib] = unique(B);
M = accumarray([ia, ib], 1);