使用MATLAb随机选择矩阵中的30%元素

时间:2011-10-07 17:18:27

标签: matlab

我需要对大小为mXn的矩阵的每个元素执行以下操作: 1.以0.3的成功概率翻转一枚硬币。 2.如果成功,则将元素设置为零。 3.否则转到下一个元素。

我使用了以下代码,但它没有给出任何输出并产生NaN,C是大小为mXn的矩阵:

index = (rand(size(C)<=0.3));
one_index = find(index ==1);
C(one_index) = 0;

1 个答案:

答案 0 :(得分:3)

问题在于这句话

index = (rand(size(C)<=0.3));

你弄乱了括号,所以你试图比较size(C) <= 0.3。这将返回[0 0],从而导致rand创建一个空矩阵。

此外,无需拨打find

C = magic(4);
index = rand(size(C)) <= 0.3;
C(index) = 0

C =

    16     2     3    13
     0    11    10     8
     9     7     6     0
     4     0    15     1