如何从单元格数组中随机抽取样本?

时间:2013-08-15 21:29:10

标签: matlab random sample

我在matlab中有一个单元格数组,我需要随机抽样,但matlab中的randsample()函数似乎不适用于单元格数组。我可以使用randi()生成随机数,这很好,但我只想要唯一的数字。

是否有可用于从单元格数组中随机采样的函数,或者任何人都可以告诉我如何使用randi()生成唯一数字?

非常感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用randperm函数生成随机排列而不重复数字。

例如P = randperm(N,K)给出K在1和N之间唯一的非重复数字

randperm(10,5)给了我:

9     2     1     6     5

randperm(10,10)给了我:

7     9     4     8     2     3     6     5     1    10

假设您有一个单元格数组

C = {'only','mad','dogs','and','englishmen','go','out','in','the','midday','sun'}

然后你可以生成一组随机短语,而不必重复这样的标记

output=[];
for i=1:5
    output = [output;sprintf('%s ',C{randperm(length(C))})];
end

给我一​​个类似下面的输出

out only dogs in mad englishmen sun go and midday the 
in and the midday sun only englishmen out go dogs mad 
out midday go in dogs and only englishmen the mad sun 
the sun out mad midday englishmen go only and dogs in 
midday mad sun out dogs in and go englishmen the only