How to insert zeros in matrix randomly?
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hajem Daham
am 7 Nov. 2017
Kommentiert: Hajem Daham
am 8 Nov. 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 Kommentare
KL
am 7 Nov. 2017
In this case zeros should be inserted in between maximum of 4 digits for all rows...
What do you mean by that?
Akzeptierte Antwort
Guillaume
am 7 Nov. 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 Kommentare
Guillaume
am 8 Nov. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Performance and Memory finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!