重复长度不同于输入向量的排列



如何解决显示向量

所有可能组合的问题?
x ="abcdefghijklmnopqrstuvwxyz"

我将把它乘以它自己。我想要一个这样的解决方案:

"aa","ab","ac",..."za","zb",.."zz" 

我可以索引每个元素

我还想要同样的乘法的解,我将得到三个和四个相同的x向量的结果,即解将是:

"aaa","aab"..."zzz" and "aaaa","aaab",..."zzzz"

尝试ndgrid()函数。它的结果取决于输出参数的数量。这是所有3个重复集合的答案

octave> [x y z] = ndgrid ("abcdef");
octave> allcombs = [x(:) y(:) z(:)];

我不打印结果,因为它很长。使用ndgrid(), perms()nchoosek()函数可以很容易地解决这类问题。

对于n长度,使用nthargout()

octave> cart  = nthargout ([1:n], @ndgrid, "abcdef");
octave> combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));

如果将字母映射为整数(参见toascii),则可以通过以25为基数的数字相加(toascii('z') - toascii('a'))来生成所有组合。例如,0 -> ' a ', 25 -> ' z ', 26 ->"ba",等等。

这样就可以按顺序生成所有的组合

相关内容

  • 没有找到相关文章

最新更新