我在 matlab 中有一个元胞数组,我需要随机抽样,但是 matlab 中的 randsample() 函数似乎不适用于元胞数组。我可以使用 randi() 生成随机数,这很好,但是我只想要唯一的数字。
是否有可用于从单元格数组中随机采样的函数,或者任何人都可以告诉我如何使用 randi() 生成唯一数字?
非常感谢。
您可以使用randperm
生成随机排列而不重复数字的函数。
例如P = randperm(N,K)
,在 1 和 N 之间给出 K 个唯一的、不重复的数字
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