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

Matlab 如何从单元格数组中随机抽取样本?,matlab,random,sample,Matlab,Random,Sample,我在matlab中有一个单元格数组,我需要随机采样,但是matlab中的randsample()函数似乎不适用于单元格数组。我可以使用randi()生成随机数,这很好,但是我只需要唯一的数字 是否有一个函数可以用于从单元格数组中随机采样,或者有人可以告诉我如何使用randi()生成唯一的数字 非常感谢。您可以使用randperm函数生成随机排列,而无需重复数字 例如,p=randperm(N,K)给出了K个在1和N之间唯一且不重复的数字 randperm(10,5)给了我: 9 2

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

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


非常感谢。

您可以使用
randperm
函数生成随机排列,而无需重复数字

例如,
p=randperm(N,K)
给出了K个在1和N之间唯一且不重复的数字

randperm(10,5)
给了我:

9     2     1     6     5
7     9     4     8     2     3     6     5     1    10
randperm(10,10)
给了我:

9     2     1     6     5
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 

您可以使用
randperm
函数生成一个随机排列,而无需重复数字

例如,
p=randperm(N,K)
给出了K个在1和N之间唯一且不重复的数字

randperm(10,5)
给了我:

9     2     1     6     5
7     9     4     8     2     3     6     5     1    10
randperm(10,10)
给了我:

9     2     1     6     5
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 

randsample()
位置
1:length(ceralray)
randsample()
位置
1:length(ceralray)
语法方面,可以将字符串数组定义为:
C={'a','b','C'}
,无需方括号。语法方面,可以将字符串数组定义为:
C={'a','b','C'}
,不需要方括号。