J'ai une matrice (m * n). pour chaque deux lignes, comment je peux trouver le nombre d'éléments correspondants qui ne sont pas zéro. par exemple pour les lignes suivantes: r1 = [1,3,0,4], r2 = [5,0,0,4] , la réponse est 2. car les premier et quatrième éléments dans deux lignes ne sont pas nuls. grâceintersection correspondante de deux lignes sans zéro dans matlab
2
A
Répondre
3
Vous pouvez utiliser la multiplication matricielle:
L = logical(m); % convert the matrix to a logical matrix
result = L * L.'; % do matrix multiplication to compute number of corresponding elements
Ainsi, l'élément de matrice result(i,j)
représente le nombre d'éléments correspondants entre la ligne et de la ligne i
j
.
0
Je suppose que vous voulez considérer chaque bloc de deux rangées; qui est, première rangée de deuxième, troisième à quatrième etc.
refaçonner le m
× n
matrice d'entrée A
dans un 2
× m/2
× n
matrice 3D, puis utiliser all
et sum
le long des dimensions appropriées:
result = sum(all(reshape(A, 2, [], size(A,2)), 1), 3);
à titre d'exemple, pour
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
le résultat est
>> result = sum(all(reshape(A, 2, [], size(A,2)), 1), 3)
result =
0 3 5
Ceci est très utile pour moi. Merci. – Hamid
@Hamid Glad si cela peut aider! Envisagez de marquer la réponse comme acceptée si c'est ce que vous voulez. – rahnema1