在matlab中通过概率值更改值

时间:2012-11-06 18:51:51

标签: matlab

我想按概率值更改变量, 作为一个例子,我在matlab中有[0 0 1 1 1 1 0 1]并且概率= 0.01 改变它的任何元素,我怎样才能在matlab中实现这一点? (我想在GA中使用它,并且p = 0.01做choromosome Gen的突变) 感谢任何帮助

2 个答案:

答案 0 :(得分:4)

首先,确定您想要更改的所有元素

array = [0 0 1 1 1 1 0 1];
sizArray = size(array);
probability = 0.01;

toChangeIdx = rand(sizArray) < probability;

然后,您可以在需要的地方翻转零和

array(toChangeIdx) = 1-array(toChangeIdx);

答案 1 :(得分:1)

您的代码的相关条件是

if rand() < probability
   % Flip your bit here, e.g. 
   % bitToFlip = randi(length(genome));
   % genome(bitToFlip) = 1 - genome(bitToFlip);
end

这将运行if语句中的代码,概率恰好为probability