【问题标题】:Randomly select 30% elements in a matrix using MATLAb使用 MATLAb 随机选择矩阵中的 30% 元素
【发布时间】:2011-10-08 01:47:08
【问题描述】:

我需要对大小为 mXn 的矩阵的每个元素执行以下操作: 1. 以 0.3 的成功概率掷硬币。 2.如果它成功将元素设置为零。 3. else 移动到下一个元素。

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    问题是这句话

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

    你把括号弄乱了,所以你试图比较size(C) &lt;= 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
    

    【讨论】:

    • 非常感谢您为我节省了时间 :)
    • @princessofpersia 如果我的回答解决了你的问题,你应该接受这个答案。有关详细信息,请参阅here
    最近更新 更多