How to insert zeros in matrix randomly?
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hajem Daham
el 7 de Nov. de 2017
Comentada: Hajem Daham
el 8 de Nov. de 2017
I have this matrix:
A =
[2, 1, 4, 6, 2;
9, 4, 6, 1, 2;
5, 3, 2, 8, 3;
7, 2, 1, 9, 3;
7, 1, 8, 2, 4]
I try to insert zeros in each row so the matrix should looks like this:
A=[2, 0, 1, 4, 6, 0, 2;
9, 4, 0, 6, 0, 1, 2;
5, 3, 2, 0, 8, 0, 3;
7, 0, 2, 1, 0, 9, 3;
7, 1, 8, 0, 2, 0, 4]
In this case zeros should be inserted in between maximum of 4 digits for all rows. Any idea on how to do it?
2 comentarios
KL
el 7 de Nov. de 2017
In this case zeros should be inserted in between maximum of 4 digits for all rows...
What do you mean by that?
Respuesta aceptada
Guillaume
el 7 de Nov. de 2017
A = [2, 1, 4, 6, 2;
9, 4, 6, 1, 2;
5, 3, 2, 8, 3;
7, 2, 1, 9, 3;
7, 1, 8, 2, 4]
zerospercol = randi(4); %up to 4 zeros per column
B = [A, zeros(size(A, 1), zerospercol)]; %append zeros
for row = 1:size(B, 1)
B(row, randperm(size(B, 2))) = B(row, :); %shuffle the row
end
B %display result
5 comentarios
Guillaume
el 8 de Nov. de 2017
The code has no restriction on the size of the matrix (other than your computer memory). I've just tried with a 20000 x 1000 matrix and 200 zeros to insert in each row with no problem.
The only reason I could see for the code to error is if you try to put more zeros per row that could possibly fit (i.e. zerosperrow is greater than size(A, 2)+1).
In any case, if you get an error message, always state what that message is.
Más respuestas (0)
Ver también
Categorías
Más información sobre Performance and Memory en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!