Randomly deleting a 'one' in a column of a binary matrix
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Wayne King
2012-10-11
编辑:Wayne King
2012-10-11
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;
更多回答(1 个)
Azzi Abdelmalek
2012-10-11
编辑:Azzi Abdelmalek
2012-10-11
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 个评论
Azzi Abdelmalek
2012-10-11
编辑:Azzi Abdelmalek
2012-10-11
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!