String MATLAB从字符串生成组合

String MATLAB从字符串生成组合,string,matlab,permutation,String,Matlab,Permutation,我有一个像FBECGHD这样的字符串,我需要使用MATLAB生成所有需要的可能排列?其中有一个执行此任务的特定MATLAB函数,或者我应该定义一个执行此任务的自定义MATLAB函数吗?使用此函数。matlab中的字符串是字符列表,因此它将排列这些字符: A = 'FBECGHD'; perms(A) 您还可以存储输出,例如p=permsA,如果A是N个字符的字符串,则p是N-by-N数组,其中每行对应一个置换 如果您对独特排列感兴趣,可以使用: unique(perms(A), 'rows')

我有一个像FBECGHD这样的字符串,我需要使用MATLAB生成所有需要的可能排列?其中有一个执行此任务的特定MATLAB函数,或者我应该定义一个执行此任务的自定义MATLAB函数吗?

使用此函数。matlab中的字符串是字符列表,因此它将排列这些字符:

A = 'FBECGHD';
perms(A)
您还可以存储输出,例如p=permsA,如果A是N个字符的字符串,则p是N-by-N数组,其中每行对应一个置换

如果您对独特排列感兴趣,可以使用:

unique(perms(A), 'rows')
若要删除重复项,则类似“ABB”的命令将给出6个结果,而不是您可能期望的3个结果。

使用该函数。matlab中的字符串是字符列表,因此它将排列这些字符:

A = 'FBECGHD';
perms(A)
您还可以存储输出,例如p=permsA,如果A是N个字符的字符串,则p是N-by-N数组,其中每行对应一个置换

如果您对独特排列感兴趣,可以使用:

unique(perms(A), 'rows')
要删除重复项,否则像“ABB”这样的东西会给出6个结果,而不是您可能期望的3个结果。

正如Richante所回答的,p=permsA对此非常方便。您可能还注意到P是char类型的,不便于子集/选择单个排列。下面是我的工作:

str = 'FBECGHD';
A = perms(str);
B = cellstr(reshape(A,7,[])');
C = unique(B);
uniqueA“行”似乎也没有删除重复的值:

>> A=[11, 11];
>> unique(A, 'rows')
ans =

    11    11
然而,uniqueA将:

我不是一个matlab专业人士,我也没有详细研究过这一点,但至少在某些情况下,重塑并不是你想要的。请注意,下面给出的999和191是199的排列,这是不正确的。所写的重塑函数似乎在以下情况下按列操作:

以下不产生999或191:

正如Richante所回答的,p=permsA对此非常方便。您可能还注意到P是char类型的,不便于子集/选择单个排列。下面是我的工作:

str = 'FBECGHD';
A = perms(str);
B = cellstr(reshape(A,7,[])');
C = unique(B);
uniqueA“行”似乎也没有删除重复的值:

>> A=[11, 11];
>> unique(A, 'rows')
ans =

    11    11
然而,uniqueA将:

我不是一个matlab专业人士,我也没有详细研究过这一点,但至少在某些情况下,重塑并不是你想要的。请注意,下面给出的999和191是199的排列,这是不正确的。所写的重塑函数似乎在以下情况下按列操作:

以下不产生999或191: