Algorithm 当几个字符总是在一起时,所有字符的排列

Algorithm 当几个字符总是在一起时,所有字符的排列,algorithm,matlab,combinations,permutation,Algorithm,Matlab,Combinations,Permutation,我试图获得字符串中所有字符的排列,比如“KIRAN”。我可以使用: 烫发(‘基兰’) 这将返回字符串中阶乘(5)=120的所有字符的排列。现在,我想得到,当字符“IRA”总是在一起时字符串的排列 答案是阶乘(3)=6 我想写一个模块,返回所有字符的排列,其中“IRA”总是在一起 你知道如何在Matlab中通过编程获得它吗 谢谢对Matlab一无所知,但是是否可以删除'RA',排列其余部分,并在每个输出字符串的'I'后面插入'RA'。简单的数学:您可以将'IRA'视为单个字母'X',现在继续'KX

我试图获得字符串中所有字符的排列,比如“KIRAN”。我可以使用:

烫发(‘基兰’)

这将返回字符串中阶乘(5)=120的所有字符的排列。现在,我想得到,当字符“IRA”总是在一起时字符串的排列

答案是阶乘(3)=6

我想写一个模块,返回所有字符的排列,其中“IRA”总是在一起

你知道如何在Matlab中通过编程获得它吗


谢谢

对Matlab一无所知,但是是否可以删除'RA',排列其余部分,并在每个输出字符串的'I'后面插入'RA'。简单的数学:您可以将
'IRA'
视为单个字母
'X'
,现在继续
'KXN'
。在输出中显示所有排列,将
'X'
替换为
'IRA'
。这对您在matlab中编写代码并不困难,因为您是;)@CiaPan你的直觉是正确的,你的方法与丹尼尔下面的答案相同。(如果序列中的
I
不是唯一的,则可以简单地用序列中不存在的其他标记值替换
IRA
。)
x={'K','IRA','N'}
%one permutation per row
y=x(perms(1:numel(x)))
%concatinate rows
y=arrayfun(@(x)[y{x,:}],1:size(y,1),'UniformOutput',false)