Matlab中的单元外矩阵串联

Matlab中的单元外矩阵串联,matlab,matrix,concatenation,cell-array,Matlab,Matrix,Concatenation,Cell Array,我编写了一个简单的matlab测试代码,其中我将3个矩阵(a,b,c)存储在一个单元格(D)中。然后我创建一个索引向量(idx),这样我就可以只从单元格中选择第一个和第三个矩阵。代码如下所示: % Begin code % a = [0 1; 2 3]; % matrix a b = [4 5]; % matrix b c = [5 6; 7 8; 9 10]; % matrix c D = cell(3,1); % Initialize

我编写了一个简单的matlab测试代码,其中我将3个矩阵(
a
b
c
)存储在一个单元格(
D
)中。然后我创建一个索引向量(
idx
),这样我就可以只从单元格中选择第一个和第三个矩阵。代码如下所示:

% Begin code %
a = [0 1; 2 3];        % matrix a
b = [4 5];             % matrix b
c = [5 6; 7 8; 9 10];  % matrix c

D = cell(3,1);         % Initialize cell D
D{1,1} = a; D{2,1} = b; D{3,1} = c; % Copy matrices inside cell

idx = [1 3]'; % Indexes vector

D = D(idx); % select matrix a and c from D
% End code (Solution should start from here...) %
如果我显示
D{:,1}
我得到的是

ans =

     0     1
     2     3

ans =

     5     6
     7     8
     9    10
我的目标是以一种智能的方式(使用一些特定的内置matlab函数)将2个矩阵(a,b)从单元D中连接起来,并可能避免for循环; 这就是我想要的:

E = [0    1
     2    3
     5    6
     7    8
     9   10];
解决方案应该是最优雅的,但我愿意接受任何建议。唯一的限制应该是不要更改我提供的代码,因为解决方案应该是我所写代码的延续


注意:由于我尝试使用的是未定义数量的矩阵(在本例中,我只有3个矩阵,但也可能是1000个),所以像
E=[D{1,:};D{2,1}]
这样的解决方案不被接受。

我的问题的答案是:


Puoi anche usare
vertcat(D{:})
:-)
cat(1,D{:})