从matlab中的指定数据中获取一些随机数据

时间:2015-11-13 15:57:37

标签: matlab random

假设我有一些数据,data=[ 3 4 5 6 55 66 733 223 55 666 333 24]我想从这些数据中获取随机数据,让我们假设

 myrand= randomdata(data, 4)

它应该从我们的样本向量返回4个数据, 如何在matlab 2011中完成?

1 个答案:

答案 0 :(得分:3)

您可以使用randperm(n,k)k列表中选择[1:n]个唯一号码。因此,要解决我们的问题,请将n作为numel(data)k作为4,如此 -

randperm(numel(data),4)

事实证明,似乎MATLAB 2011不支持选择元素数量的第二个参数。因此,一种解决方法是为data中的所有可能索引获取随机索引,并选择第一个4索引,这些索引可用于索引data以获得所需的输出,如下所示 -

rand_idx = randperm(numel(data))
out = data(rand_idx(1:4))

此选择可能不会遵循均匀分布的随机性,因为我们总是使用第一个4数字进行选择。相反,您可以使用线性间距索引将选择分布为更多 uniform ,如下所示 -

data(rand_idx(round(linspace(1,numel(data),4))))

示例运行 -

>> data = [ 3 4 5 6 55 66 733 223 55 666 333 24];
>> rand_idx = randperm(numel(data));
>> data(rand_idx(1:4))
ans =
    55     4    24     6
>> data(rand_idx(round(linspace(1,numel(data),4))))
ans =
    55    66   733     3