我在 matlab 中有一个元胞数组,我需要随机采样,但是 matlab 中的 randsample() 函数似乎不适用于元胞数组。我可以使用 randi() 生成随机数,这很好,但我只想要唯一的数字。
是否有一个函数可用于从元胞数组中随机采样,或者有人可以向我展示如何使用 randi() 生成唯一的数字吗?
非常感谢。
最佳答案
您可以使用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
关于matlab - 如何从单元阵列中随机抽取样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262196/