假设我有一些数据,data=[ 3 4 5 6 55 66 733 223 55 666 333 24]
我想从这些数据中获取随机数据,让我们假设
myrand= randomdata(data, 4)
它应该从我们的样本向量返回4个数据, 如何在matlab 2011中完成?
答案 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