如何在不重复的情况下获取数组元素的所有可能组合
How to get all possible combinations of array elements without duplicate
我有一个字符串元素向量 vector = {'A','B','C'}
。
我想生成数组三个元素的所有可能组合但不重复。
我希望得到以下结果:{'A', 'B', 'C', 'AB', 'AC', 'BC', 'ABC'}
.
我如何在 MATLAB 中做到这一点?
从你想要的结果来看,你想要所有的组合有'A'
、'B'
、'C'
和''
(无)两种选择。你可以用 nchoosek
做如下
result = nchoosek(' ABC', 2) % note space for empty
输出
result =
6×2 char array
' A'
' B'
' C'
'AB'
'AC'
'BC'
然后删除空格并将组合转换为元胞数组:
result = strrep(cellstr(result), ' ', '')
正如 Wolfie 所指出的,这仅适用于单字符输入,对于多字符输入,我们可以使用字符串数组而不是字符数组:
result = nchoosek(["","A1","B2","C3"], 2);
result = result(:,1) + result(:,2) % string cat
% result = cellstr(result); % optional if want cell output
result =
6×1 string array
"A1"
"B2"
"C3"
"A1B2"
"A1C3"
"B2C3"
我有一个字符串元素向量 vector = {'A','B','C'}
。
我想生成数组三个元素的所有可能组合但不重复。
我希望得到以下结果:{'A', 'B', 'C', 'AB', 'AC', 'BC', 'ABC'}
.
我如何在 MATLAB 中做到这一点?
从你想要的结果来看,你想要所有的组合有'A'
、'B'
、'C'
和''
(无)两种选择。你可以用 nchoosek
做如下
result = nchoosek(' ABC', 2) % note space for empty
输出
result =
6×2 char array
' A'
' B'
' C'
'AB'
'AC'
'BC'
然后删除空格并将组合转换为元胞数组:
result = strrep(cellstr(result), ' ', '')
正如 Wolfie 所指出的,这仅适用于单字符输入,对于多字符输入,我们可以使用字符串数组而不是字符数组:
result = nchoosek(["","A1","B2","C3"], 2);
result = result(:,1) + result(:,2) % string cat
% result = cellstr(result); % optional if want cell output
result =
6×1 string array
"A1"
"B2"
"C3"
"A1B2"
"A1C3"
"B2C3"