在MATLAB中,我有一组P
个数字。我想从这个集合中生成一个大小为N
的随机数组。
为了举例,假设我有一组{1, 4}
。假设我想生成一个大小为5
的数组(例如[1 1 4 1 4]
)。
我做的是:我使用randi
生成了以下数组。
N = 5;
v = randi([1 4],[1 N]);
问题是我有一个随机数组,其中包含1:4
而不是{1, 4}
中的值。
我可以简单地做到这一点,但我需要一个更好的方法。
for i = 1:length(v)
if v(i) ~= 1 || v(i) ~= 4
v(i) = 1; % or v(i) = 4
end
end
我想我在这里错过了一个简单的提示。
答案 0 :(得分:4)
您应该使用datasample
,
y = datasample(data,k)
返回从k
中的数据随机统一抽样data
个观察结果。
a = [1,4];
datasample(a,5)
根据使用情况,您可以考虑使用,
datasample(unique(a),5)
答案 1 :(得分:4)