matlab 把矩阵 里随机 百分之几的 cells 变成0
比如说呢 一个5X5的矩阵
a=[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;]
,有 25个坑,
我想随机让其中5个坑变成0,请问怎么操作?除了20%,以后还要40%,50%,60%等。
我自己的想法如下:
for i=1:10
x=100;
y=100;
weight=ones(x,y);
total_number=x*y;
kill_number=total_number*0.8;
count_number=0;
while count_number<kill_number
kill_single_link=randi(total_number);
if weight(kill_single_link)~=0
weight(kill_single_link)=0;
count_number=count_number+1;
end
end
end
里头加一个for 循环是因为在我的应用里会把这个套进一个for循环里运行10次;
我觉得我的方法效率实在是太低了,请问,有没有人能想到更好的办法呢?