Find common non-zero indexes
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tha saliem
le 10 Juin 2017
Commenté : Andrei Bobrov
le 12 Juin 2017
i have a matrix like this:
A=[4,0,5,5;0,2,4,0;3,0,0,0;0,1,0,3;3,0,1,0;2,0,0,2;0,0,3,0;2,3,4,0]
And matrix B and C are row numbers derived from matrix A based on some condition.
B=[7;8]
C=[1;2;3;4;5;6]
I want to compare values of matrix B with each value of matrix C and find what nonzero indexes are common between both in matrix A.
for example: first value of B is 7 and it will be compared with all values of C. In first iteration, comparison will be 7 and 1 and result will be 3 because 3rd value is common nonzero value between both. Similarly:
result(7,2)=3
result(7,3)=0 (No nonzero index is common)
and similarly after 7, 8 will be compared with all values of C.
Please help on this.
Réponse acceptée
Andrei Bobrov
le 10 Juin 2017
Modifié(e) : Andrei Bobrov
le 12 Juin 2017
[EDIT 2]
A=[4,0,5,5;0,2,4,0;3,0,0,0;0,1,0,3;3,0,1,0;2,0,0,2;0,0,3,0;2,3,4,0];
B=[7;8];
[C,~] = find(bsxfun(@ne,(1:size(A,1))',B(:)'));
n = numel(B);
B1 = repelem(B,numel(C)/n);
k = squeeze(num2cell( bsxfun(@times,bsxfun(@and,A(C,:), A(B1,:)),1:size(A,2)),2 ));
result = cellfun(@nonzeros,k,'un',0);
result(cellfun(@isempty,result)) = {0}
result = reshape(result,[],n);
6 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!