我有一个120x1 double
数组,只包含值1,0和0。
使用ceil
函数可以很容易地舍入0.5值,或者使用floor
函数将所有值向下舍入。但是,我想在向量中的每个0.5
值之间随机决定向上舍入为1或向下舍入为0,同时保留所有1
和0
元素相同。< / p>
有没有办法在不循环遍历向量的每个元素的情况下执行此操作?
答案 0 :(得分:2)
您可以执行以下步骤:
0.5
条目在原始数组中的哪些索引round
这些新生成的数字并将它们分配给原始数组% 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
条目随机生成1
或0.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)));