2012-04-24 47 views
0

我有一套n基因组,和n对应的适应值。我想根据它们的比例适应值对替换的基因组进行取样,例如P(genome) = fitness(genome)/sum(fitness(genomes))。在Matlab中是否有内置的采样机制?在Matlab中进行取样取样

回答

1

如果你想从一个人口的4,其适应度获得10个样本是0.4,0.3,0.2和0.1分别,那么你可以做:

>> fitness = [0.4 0.3 0.2 0.1]; 
>> mnrnd(10,fitness) 
ans = 
    3  5  1  1 
+0

这实际上与我所期待的不同,但它很好地解决了这个问题。 – Jake 2012-04-27 00:04:01

0

Matlab内置了多项式随机数发生器。您可以使用mnrnd达到您的目的。

0

您可以使用randsample用于此目的:

>> f = [2 5 7 8 1]; %# fitness values (not normalized) 
>> g = {'g1', 'g2', 'g3', 'g4', 'g5'}; %# genome names 
>> gSampled = randsample(g,100,true,f) %# sample 100 genomes with replacement