MATLAB:随机选择向上/向下舍入向量的每个元素

时间:2016-09-03 08:14:32

标签: matlab

我有一个120x1 double数组,只包含值1,0和0。

使用ceil函数可以很容易地舍入0.5值,或者使用floor函数将所有值向下舍入。但是,我想在向量中的每个0.5值之间随机决定向上舍入为1或向下舍入为0,同时保留所有10元素相同。< / p>

有没有办法在不循环遍历向量的每个元素的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

您可以执行以下步骤:

  1. 找出0.5条目在原始数组中的哪些索引
  2. 为每个条目生成0到1之间的随机数
  3. round这些新生成的数字并将它们分配给原始数组
  4. % generate demo data
    n = 120;
    v = [0, 0.5, 1];
    data = v(randi(length(v), n, 1))';
    
    % randomly round up or down the 0.5 entries
    zero_point_five_idx = find(data==0.5);
    data(zero_point_five_idx) = round(rand(size(zero_point_five_idx)));
    

    更简单:为每个0条目随机生成10.5

    possible_values = [0,1];
    zero_point_five_idx = find(data==0.5);
    data(zero_point_five_idx) = possible_values(randi(length(possible_values), size(zero_point_five_idx)));