假设我在数据中有一个从1到85的整数序列集:
data = [1:1:85];
如果我选择removeselection = 0,则answer应该等于数据(所有数字从1到85)。
如果我选择removeselection = 1,则应该回答85组数据。
data1 = [2:1:85] %remove number 1;
data2 = data(:,2) = []; %remove number 2
data3 = data(:,3) = []; %remove number 3
.
.
.
data85 = data(85,:) = []; %remove number 85
如果我选择removeselection = 2,则answer应删除2个数字并生成85(84)组数据。
如果我选择removeselection = 84,则答案应为85组由单个数字组成。
data1 = [1];
data2 = [2];
data3 = [3];
.
.
.
data85 = [85];
如果我选择removeselection = 85,则答案应该等于0
该功能应该允许用户将删除次数从0到最大数字放在85的数据中。
请就此事帮助我。我真的坚持这个xD
答案 0 :(得分:2)
以下是使用nchoosek
的一行解决方案。但请注意,正如我在评论中所说,数据组的数量可能会变得非常大。
data = [1:1:6]; %// example data
removeSelection = 3; %// how many data to remove
groupsOfData = data(nchoosek(data,numel(data)-removeSelection));
在示例中,结果是:
groupsOfData =
1 2 3
1 2 4
1 2 5
1 2 6
1 3 4
1 3 5
1 3 6
1 4 5
1 4 6
1 5 6
2 3 4
2 3 5
2 3 6
2 4 5
2 4 6
2 5 6
3 4 5
3 4 6
3 5 6
4 5 6
如果数据组太多而您想随机抽样(正如您在评论中所述),则可以使用randsample
:
randomGroupOfData = randsample(data,numel(data)-removeSelection);