很多行成一行(Matlab)

时间:2015-07-30 04:51:41

标签: matlab

我按如下方式生成了对:

      vec1 = ('A':'C');
      vec2 = ('A':'C');
      [p,q] = meshgrid(vec1, vec2);
      out = [p(:) q(:)]

这些对分为多行,如下所示:

     pairs =
               AA
               AB
               AC
               BA
               BB
               BC
               CA
               CB
               CC

如何获得在这一行中形成的对:

      pairs = AAABACBABBBCCACBCC

1 个答案:

答案 0 :(得分:4)

TUT(转置,展开,转置):

>> out = out.';
>> pairs = out(:).'

pairs =

AAABACBABBBCCACBCC

以上工作原理如何在MATLAB中展开或使用(:)将N维数组转换为单个向量。这是以列主格式完成的,因此矩阵的列堆叠在彼此之上以形成单个向量。但是,您希望将所有行堆叠在一起。我们可以通过首先转置矩阵使行成为列,然后展开转置以使列堆叠在彼此之上来实现。这是您想要的结果,但它只是一个列,所以您需要转换此结果以获得您想要的结果。

或者,你可以在转置上使用reshape并确保我们为输出获得一行:

>> pairs = reshape(out.', 1, [])

pairs =

AAABACBABBBCCACBCC