2017-08-21 82 views
2

我有一個矩陣(m * n)。對於每兩行,我如何找到不爲零的相應元素的數量。例如對於以下行: r1 = [1,3,0,4],r2 = [5,0,0,4] ,答案是2.因爲兩行中的第一和第四元素不爲零。感謝matlab中兩行沒有零的相應交點

回答

3

可以使用矩陣乘法:

L = logical(m);  % convert the matrix to a logical matrix 
result = L * L.'; % do matrix multiplication to compute number of corresponding elements 

所以矩陣元素result(i,j)代表i行之間的對應元素的數量和行j

+0

這對我很有幫助。謝謝。 – Hamid

+0

@哈米德很高興,如果它可以幫助!考慮將答案標記爲接受,如果它是你想要的。 – rahnema1

0

我假設你想考慮每個塊ot兩行;也就是說,第一排與第二,第三與第四等

重塑m×n輸入矩陣A2×m/2×n 3D陣列,然後使用沿適當的尺寸和allsum

result = sum(all(reshape(A, 2, [], size(A,2)), 1), 3); 

作爲一個例子,對於

A = 
    0  2  0  0  0 
    2  0  0  2  1 
    1  0  1  2  2 
    1  1  2  1  0 
    1  1  1  1  2 
    1  2  1  1  1 

結果是

>> result = sum(all(reshape(A, 2, [], size(A,2)), 1), 3) 
result = 
    0  3  5