2017-05-05 149 views
0

我有'M'個用戶,它們對於每種情況具有N1和N2可能值的兩個不同特性。 IE:A是指定每個用戶的性別{'F','M'}(N1 = 2)的Mx1向量,並且B是指定用戶居住的大陸的Mx1向量{'ASIA','非洲' ,'AMERICA'等}(N2 = 6)。 我想創建一個N1xN2(2 * 6)矩陣,該矩陣爲我提供了每個性別和大陸組合的用戶數量,而無需使用for循環。 我試過這段代碼:Matlab中的二維邏輯矩陣

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

但它不是我所需要的。

在此先感謝。 PS:我不需要數值的笛卡爾積,我需要一個矩陣來計算每個組合的元素。

+0

我不認爲這是一個重複的。 Eric,你可以做下面的[〜,〜,ia] =唯一的(A); [〜,〜,ib] = unique(B); M = accumarray([ia,ib]);未嘗試,但應該工作 –

+0

'M = accumarray([ia,ib])拋出錯誤:「使用accumarray錯誤輸入參數不足。我已經更改爲'M = accumarray(ia,ib)',但它只返回一個只有一個特徵的向量。 – Eric

+0

對不起,認爲snd參數是可選的。試試'accumarray([ia,ib],1)' –

回答

0

你需要accumarray這裏:

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

正是我需要的!非常感謝你 – Eric