how to change every value not equal to X in every rows
2 views (last 30 days)
Show older comments
Isabelle Bouret
on 17 Apr 2019
Commented: Walter Roberson
on 17 Apr 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 Comments
Accepted Answer
madhan ravi
on 17 Apr 2019
Edited: madhan ravi
on 17 Apr 2019
Wanted = zeros(size(matrix));
indices=sub2ind(size(matrix),1:size(matrix,1),Vector);
Wanted(indices)=matrix(indices)
6 Comments
Walter Roberson
on 17 Apr 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
More Answers (1)
Walter Roberson
on 17 Apr 2019
Edited: Walter Roberson
on 17 Apr 2019
rows = size(EX_matrix,1);
ind = (1:rows).' + (Vector(:)-1)*rows;
Output = zeros(size(EX_matrix));
Output(ind) = EX_matrix(ind);
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!