Randomly deleting a 'one' in a column of a binary matrix
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I have a matrix that looks like this:
1 1 1 1 1 1
0 1 1 1 1 1
0 0 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 0 1
0 0 0 0 0 1
What should I do when I randomly want to delete a 'one' in (let's say) column 4? Thanks in advance,
Tim
0 Kommentare
Akzeptierte Antwort
Wayne King
am 11 Okt. 2012
Bearbeitet: Wayne King
am 11 Okt. 2012
If you want to just choose one of the 1's from the matrix to set equal to 0, then
indices = find(A>0);
chooseset = randperm(length(indices));
index = chooseset(1);
A(indices(index)) = 0;
If you really want to restrict it to just column 4
indices = find(A(:,4)>0);
chooseset = randperm(length(indices));
index = indices(chooseset(1));
A(index,4) = 0;
Recently randperm() has been updated so you can just get 1 value back.
indices = find(A(:,4)>0);
choice = randperm(length(indices),1);
index = indices(choice);
A(index,4) = 0;
Weitere Antworten (1)
Azzi Abdelmalek
am 11 Okt. 2012
Bearbeitet: Azzi Abdelmalek
am 11 Okt. 2012
A=[1 1 1 1 1 1
0 1 1 1 1 1
0 0 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 0 1
0 0 0 0 0 1]
m=size(A,2)
idx=randi(m,1)
A(:,idx)=[] % this will remove column number idx
%I 'm not sur what you mean by delete a one, if you want raplace them by 0
A(:,idx)=0
4 Kommentare
Azzi Abdelmalek
am 11 Okt. 2012
Bearbeitet: Azzi Abdelmalek
am 11 Okt. 2012
Tim you did'nt read all the answer, at the end I said use
A(:,idx)=0
istead of
A(:,idx)=[]
which means use the below code
m=size(A,2)
idx=randi(m,1)
A(:,idx)=0
Siehe auch
Kategorien
Mehr zu Matrices and Arrays 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!