2

如何解决显示所有可能的向量组合的问题

x ="abcdefghijklmnopqrstuvwxyz"

我会在其中将它自己相乘。我想要这样的解决方案:

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

我可以为每个元素编制索引。

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

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

2 回答 2

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));
于 2013-03-09T15:09:33.817 回答
0

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

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

于 2013-03-09T12:05:03.400 回答