Randomly deleting a 'one' in a column of a binary matrix

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

 Réponse acceptée

Wayne King
Wayne King le 11 Oct 2012
Modifié(e) : Wayne King le 11 Oct 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;

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 11 Oct 2012
Modifié(e) : Azzi Abdelmalek le 11 Oct 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 commentaires

Tim
Tim le 11 Oct 2012
Thank you for your quick response! However, if I'm correct this will delete a whole column, instead of just a '1' in column 4. What I mean is that I want to randomly delete one of the six '1's in column 4.
Cheers, T.
My answer below will change just one of the 1's to a 0.
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
Tim
Tim le 11 Oct 2012
Hi Azzi,
You're right, I did not read that part of the answer. This will however replace one of the columns with only zeros instead of take one of the '1's from a column. Wayne already helped me with that, but thanks again for your help!
Cheers, T.

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by