如何在MATLAB中连接向量以创建非矩形矩阵?

时间:2015-02-04 21:53:36

标签: arrays matlab jagged-arrays

有没有办法创建非矩形矩阵?例如,如果我有一个矩阵a=[6 8 10]和另一个矩阵b=[1 5],我可以垂直连接它们以便在一行中获得[6 8 10]而在另一行中获得[1 5]吗?

1 个答案:

答案 0 :(得分:2)

直接答案是。 MATLAB不支持ragged or non-rectangular or non-square matrices。解决这个问题的一种方法是制作一个单元格数组,其中每个单元格都是不等长度的向量。

类似的东西:

a = [6 8 10];
b = [1 5];
c = cell(1,2);
c{1} = a;
c{2} = b;

celldisp(c)

c{1} =

     6     8    10

c{2} =

     1     5

另一种方法是创建一个矩阵,其中包含任何内容的值都会映射到预设数字,如零。因此,您可以将ab连接成一个矩阵,使其变为[6 8 10; 1 5 0];。如果这是你喜欢的,你可以这样做:

a = [6 8 10];
b = [1 5];
c = zeros(2, 3);
c(1,1:numel(a)) = a;
c(2,1:numel(b)) = b;
disp(c)

 6     8    10
 1     5     0

关于这一特定主题的更全面的论文可以在gnovice的答案中找到:How can I accumulate cells of different lengths into a matrix in MATLAB?

其他相关答案由Jonas创建:How do I combine uneven matrices into a single matrix?