Replace specific values in a matrix with zeros
34 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Luan Nguyen Thanh
le 18 Nov 2017
Commenté : Luan Nguyen Thanh
le 18 Nov 2017
Assume, I have two matrices like this:
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
B = [3 2 4 5 2 1];
I want to produce a matrix C below from matrix A & B like this:
C =
35 1 6 26 19 24
3 32 7 21 23 0
31 0 2 22 0 0
0 0 33 17 0 0
0 0 0 12 0 0
where the ith element in matrix B determines "the number of elements in matrix A's ith column" that will bring to the ith column of the matrix C. For example, B(1) = 3 means that the 1st column of matrix C is equal to
[A(1:B(1),1) ; zeros(5-B(1),1)];
So is there any way for me to produce matrix C from A & B without using any "loop" command?
0 commentaires
Réponse acceptée
Stephen23
le 18 Nov 2017
Modifié(e) : Stephen23
le 18 Nov 2017
In one line:
>> A = [...
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16];
>> B = [3,2,4,5,2,1];
>> C = A.*bsxfun(@le,(1:size(A,1)).',B)
C =
35 1 6 26 19 24
3 32 7 21 23 0
31 0 2 22 0 0
0 0 33 17 0 0
0 0 0 12 0 0
Plus de réponses (2)
Bshara Murr
le 18 Nov 2017
Modifié(e) : Bshara Murr
le 18 Nov 2017
Hello, yes try this:
A =[35 1 6 26 19 24; 3 32 7 21 23 25; 31 9 2 22 27 20; 8 28 33 17 10 15; 30 5 34 12 14 16;];
B = [3 2 4 5 2 1];
[x y]= size(A);
C = zeros(x,y);
for i = 1:y
for j = 1:B(i)
C(j,i) = A(j,i);
end
end
I just used the matrices you entered.
0 commentaires
Voir également
Catégories
En savoir plus sur NaNs 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!