how to change every value not equal to X in every rows
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Isabelle Bouret
le 17 Avr 2019
Commenté : Walter Roberson
le 17 Avr 2019
Hi,
I have a matrix (20000x365) and I have a vector(20000x1) in which I have the column assiciate with the number that I DON'T want to change (This number change for every rows) .
For every rows I want to change every colums, beside the one that is in the vector, for 0
EX: matrix [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
Vector [3,1,3,2]
The answers should be [0 0 1 0; 8 0 0 0; 0 0 6 0; 0 3 0 0]
Thanks for your help!
0 commentaires
Réponse acceptée
madhan ravi
le 17 Avr 2019
Modifié(e) : madhan ravi
le 17 Avr 2019
Wanted = zeros(size(matrix));
indices=sub2ind(size(matrix),1:size(matrix,1),Vector);
Wanted(indices)=matrix(indices)
6 commentaires
Walter Roberson
le 17 Avr 2019
If you are going to loop then
Wanted = zeros(size(l_s));
for i = 1:L
if Vector(i) ~= 0
Wanted(i, Vector(i)) = Matrice(i, Vector(i));
end
end
or
Wanted = zeros(size(l_s));
for i = find(Vector)
Wanted(i, Vector(i)) = Matrice(i, Vector(i));
end
Plus de réponses (1)
Walter Roberson
le 17 Avr 2019
Modifié(e) : Walter Roberson
le 17 Avr 2019
rows = size(EX_matrix,1);
ind = (1:rows).' + (Vector(:)-1)*rows;
Output = zeros(size(EX_matrix));
Output(ind) = EX_matrix(ind);
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!