Matlab中的二维逻辑矩阵

Matlab中的二维逻辑矩阵,matlab,matrix,logic,Matlab,Matrix,Logic,我有“M”用户,他们有两个不同的特征,即N1和N2,每种情况下可能的值。也就是说:A是一个Mx1向量,它表示每个用户的性别{'F','M'}(N1=2),B是一个Mx1向量,它表示用户居住的大陆{'亚洲','非洲','美洲'}(N2=6)。 我想创建一个N1xN2(2*6)矩阵,它给出了每个性别和大陆组合的用户数,而不使用for循环。 我尝试过以下代码: bsxfun(@eq,A,unique(A)”*bsxfun(@eq,B,unique(B) 但这不是我需要的 提前谢谢 PS:我不需要值的笛

我有“M”用户,他们有两个不同的特征,即N1和N2,每种情况下可能的值。也就是说:A是一个Mx1向量,它表示每个用户的性别{'F','M'}(N1=2),B是一个Mx1向量,它表示用户居住的大陆{'亚洲','非洲','美洲'}(N2=6)。 我想创建一个N1xN2(2*6)矩阵,它给出了每个性别和大陆组合的用户数,而不使用for循环。 我尝试过以下代码:

bsxfun(@eq,A,unique(A)”*bsxfun(@eq,B,unique(B)

但这不是我需要的

提前谢谢


PS:我不需要值的笛卡尔积,我需要一个矩阵来计算每个组合的元素。

您需要
accumarray
这里:

[~,~,ia] = unique(A);
[~,~,ib] = unique(B);
M = accumarray([ia, ib], 1);

我认为这不是复制品。Eric,您可以执行以下操作[~,~,ia]=unique(A);[~,~,ib]=唯一(B);M=accumarray([ia,ib]);未尝试但应能正常工作
M=accumarray([ia,ib])
抛出以下错误:“使用accumarray的错误输入参数不足。”我已更改为
M=accumarray(ia,ib)
,但它只返回一个带有一个特征计数的向量。抱歉,我认为snd参数是可选的。试试“accumarray([ia,ib],1)”@rayryeng:你为什么认为它是重复的?@G.J看到编辑后,这不是重复的。我会重新开门的。请继续回答这个问题。