我想把matlab矩阵里随机抽取20%的数字的值变成0,请问如何操作?

RT比如说呢一个5X5的矩阵a=[11111;11111;11111;11111;11111;],有25个坑,我想随机让其中5个坑变成0,请问怎么操作?除了20%,以后还... RT
比如说呢 一个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%等,所以这个变0的百分比要有一个变量空着着,不求算法,只求实现,谢谢回答!
展开
 我来答
烛龙一现
推荐于2018-05-01 · TA获得超过390个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:110万
展开全部
>> A=floor(rand(5,7)*100);%随机生成5行7列且元素为(0,100)之间的整数矩阵
>> A
A =
49 75 95 84 34 35 28
95 25 54 25 19 83 75
34 50 13 81 25 58 75
58 69 14 24 61 54 38
22 89 25 92 47 91 56
>> [r,c]=size(A)
r =
5

c =
7
>> totalNum=r*c;%由矩阵的行列数得出矩阵元素总个数
>> randomIndex=1+floor(rand(1,floor(totalNum*0.2))*totalNum)%生成值在1到矩阵总元素个数totalNum之间的totalNum*20%个随机数,作为矩阵中将要置零的元素的下标索引(此时把矩阵看作是一个一维数组)
randomIndex =
3 2 19 28 33 5 20
>> A(randomIndex)=0;%跟生成的随机元素索引,来把相应的元素置零
>> A
A =
49 75 95 84 34 35 28
0 25 54 25 19 83 75
0 50 13 81 25 0 0
58 69 14 0 61 54 38
0 89 25 0 47 91 56

可见将35*20%个元素随机的置零了

将下面的语句复制到Command Window,或建立.m文件运行即可(每次运行结果都不一样):
A=floor(rand(5,7)*100)
[r,c]=size(A)
totalNum=r*c;
randomIndex=1+floor(rand(1,floor(totalNum*0.2))*totalNum)
A(randomIndex)=0
刘威108
2014-03-28 · TA获得超过128个赞
知道答主
回答量:110
采纳率:100%
帮助的人:109万
展开全部
不知道你具体指的是什么

随机数已经选取好了的话可以直接赋值为0
随机数可以选择randi(n),生成0---n之间均匀分布的伪随机数 随便选取五分之一的部分应该你想用的 然后挨个赋值就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1213MYH1213
2014-03-28
知道答主
回答量:11
采纳率:0%
帮助的人:3.7万
展开全部
把抽取的值放到一个矩阵或者向量里,再令它为零
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式