matlab - 如何从单元阵列中随机抽取样本?

标签 matlab random sample

我在 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/

相关文章:

r - 来自不同数据框的样本

r - 仅显示多个 t.tests 的 p 值

c# - 捕获数据包然后丢弃数据包 IPS 系统

matlab - 如何使用 matlab 在矩阵中找到唯一(非重复)值

c++ - 在 [0..n-1] 范围内生成 m 个不同的随机数

python - 如何在Python中使用random.sample()后获取剩余的样本?

matlab - 重采样和抗锯齿FIRLS滤波器顺序

matlab - 将函数应用于矩阵,这取决于索引?

c++ - C++11 中的随机字节生成

c - 给定间隔的随机字符串