我正在尝试制作2个不同的样本数组,我知道如何制作这样的样本:
x_1 = randsample(1:10,5,true);
x_2 = randsample(1:10,5,true);
但我希望x_2
是一个不同的样本,我的意思是在另一个x_1
数组中不会重复数组的任何元素。 Matlab中是否有任何简单的功能,无需测试每个元素并手动更改它?
感谢您的帮助
答案 0 :(得分:3)
最简单的方法是从分布中抽取两次,然后将结果分成两部分。然后,保证阵列内或阵列之间没有重复值。
% Sample 10 times instead of 5 (5 for each output)
samples = randsample(1:10, 10);
% 2 10 4 5 3 8 7 1 6 9
% Put half of these samples in x1
x1 = samples(1:5);
% 2 10 4 5 3
% And the other half in x2
x2 = samples(6:end);
% 8 7 1 6 9
如果要在数组中允许重复,则可以选择其他方法。然后,您只需删除第一个中显示的内容,即可将输入样本修改为第二个randsample
调用。
% Define the initial pool of samples to draw from
samples = 1:10;
x1 = randsample(samples, 5, true);
% 5 4 8 8 2
% Remove things in x1 from samples
samples = samples(~ismember(samples, x1));
x2 = randsample(samples, 5, true);
% 6 6 7 9 9