Generate all possible subset from a character array in MATLAB

I need to generate all possible subset from a character array with reduced execution time. Actual input is of length '500' characters and maximum length of subset is limited to 20 characters.
For example:
input='ABCA';
output ='A', 'B', 'C', 'AB', 'BC', 'CA', 'ABC', 'BCA', 'ABCA'

4 件のコメント

madhan ravi
madhan ravi 2019 年 3 月 30 日
編集済み: madhan ravi 2019 年 3 月 30 日
But you have only 19 in the output?
Sangeetha R
Sangeetha R 2019 年 3 月 30 日
example output have 9 subsets with length of characters in the subsets range from 1 to 4. The maximum length of characters in a subset is limited to 20 characters.
Walter Roberson
Walter Roberson 2019 年 3 月 30 日
Could you confirm that length(unique(input)) is 500? For example 500 Chinese ideographs? As opposed to length(input) being 500 but the number of unique being much smaller?
Sangeetha R
Sangeetha R 2019 年 3 月 30 日
length(input) is 500

サインインしてコメントする。

回答 (2 件)

Sangeetha R
Sangeetha R 2019 年 3 月 30 日
編集済み: Sangeetha R 2019 年 3 月 30 日

0 投票

Answer that i found is given below,
tic
input='MERASLIQKAKLAEQAERYEDMAAFMKGAVEKGEELSCEERNLLSVAYKNVVGGQRAAWRVLSSIEQKSNEEGSEEKGPEVREYRVFYLKMKGDYYRYLAEVATGDDKKRIIDSARSAYQEAMDISKKEMPPTNPIRLGLALNFSVFHYEIANSPEEAISLAKTTFDEAMADLHTLSEDSYKDSTLIMQLLRDNLTLWTADNAGEEGGEAPQEPQSMERASLIQKAKLAEQAERYEDMAAFMKGAVEKGEELSCEERNLLSVAYKNVVGGQRAAWRVLSSIEQKSNEEGSEEKGPEVREYRVFYLKMKGDYYRYLAEVATGDDKKRIIDSARSAYQEAMDISKKEMPPTNPIRLGLALNFSVFHYEIANSPEEAISLAKTTFDEAMADLHTLSEDSYKDSTLIMQLLRDNLTLWTADNAGEEGGEAPQEPQSSEDSYKDSTLIMQLLRDNLTLWTADNAGEEGGEAPQEPQSMERASLIQKAKLAEQAERYEDMAAFMKGAVEKGEELSCEERNLLSVAYKNVVGGQRAAW';
l=length(input);
begn=1;
count=1;
output_seq=cell(1000,1);%preallocating
for i=1:l
if(begn<=l)
[count,output_seq]=pep(begn,l,input,count,output_seq);
begn=begn+1;
end
end
output_unique=unique(output_seq);
toc
function [count,output_seq]=pep(b,l,input,count,output_seq)
for i=0:l
if(b+i-b<21)
if(b+i<=l)
p = input(b:b+i);
output_seq{count}=p;
count=count+1;
end
end
end
end
Walter Roberson
Walter Roberson 2019 年 3 月 30 日

0 投票

Consider
[S(1:end-2);
S(2:end-1);
S(3:end)].'
Now unique rows

カテゴリ

ヘルプ センター および File ExchangeTime-Frequency Analysis についてさらに検索

製品

リリース

R2018b

タグ

質問済み:

2019 年 3 月 30 日

回答済み:

2019 年 3 月 30 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by