重复长度的排列与Octave中的输入向量不同

时间:2013-03-09 11:20:50

标签: vector combinations octave algebra linear

如何解决显示所有可能的向量组合的问题     x =“abcdefghijklmnopqrstuvwxyz” 我会将它自己乘以它。 我想要这样的解决方案     “AA”, “AB”, “交流” ...... “ZA”, “ZB”,.. “ZZ” 我可以将每个元素编入索引。

我也想要相同乘法的解决方案,我将获得三个和四个相同的x向量的结果,即解决方案将是:     “aaa”,“aab”......“zzz”和“aaaa”,“aaab”,......“zzzz”

2 个答案:

答案 0 :(得分:3)

尝试使用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));

答案 1 :(得分:0)

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

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