在MATLAB中创建有序选择

时间:2013-11-14 12:52:30

标签: matlab

如何在MATLAB中生成订单选择。我需要创建一个单词的所有排列,其中顺序很重要。 因此,如果您想要所有有序选择的2个字母,请使用“时间”一词。 你应该收到

q=

em
ei
et
me
mi
mt
im
ie
it
tm
ti
te

我只能使用这样的代码来完成4个字母的单词。

P = perms(S);
r = size(P);
if length(S) == k
    perms(S);
else
    q = P(1:2:r,1:k)

但是我需要为所有长度的单词(最多10个)和单词结尾的任何数字生成它。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用permsunique

word = 'time';
result = perms(word);
result = unique(result(:,1:2),'rows');

在你的例子中,这给出了

>> result

result =

ei
em
et
ie
im
it
me
mi
mt
te
ti
tm

如果您希望明确计算单词中多个相同字母的出现次数:使用索引处理,而不是使用字母:

word = 'timid';
ind = perms(1:length(word));
ind = unique(ind(:,1:2),'rows');
result = word(ind);

例如,使用“胆小”一词,这就是

>> result

result =

ti
tm
ti
td
it
im
ii
id
mt
mi
mi
md
it
ii
im
id
dt
di
dm
di