在Matlab中连接一个单元格的矩阵
Concatenate matrices out of a cell in Matlab
我写了一个简单的 matlab 测试代码,我在一个单元格 (D
) 中存储了 3 个矩阵 (a
、b
、c
)。然后,我创建了一个索引向量 (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 函数)将单元格 D 中的 2 个矩阵 (a,b) 连接起来,并可能避免 for环形;
这就是我想要的:
E = [0 1
2 3
5 6
7 8
9 10];
解决方案应该是最优雅的,但我愿意接受任何建议。唯一的限制应该是不要更改我提供的代码,因为解决方案应该是我所写内容的延续。
注意:由于我正在尝试做的事情应该使用未定义数量的矩阵(在这个例子中我只有 3 个但也可能是 1000 个),解决方案如E = [D{1,:};D{2,1}]
未被接受。
已找到我的问题的答案 here:
cat(1,D{:})
我写了一个简单的 matlab 测试代码,我在一个单元格 (D
) 中存储了 3 个矩阵 (a
、b
、c
)。然后,我创建了一个索引向量 (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 函数)将单元格 D 中的 2 个矩阵 (a,b) 连接起来,并可能避免 for环形; 这就是我想要的:
E = [0 1
2 3
5 6
7 8
9 10];
解决方案应该是最优雅的,但我愿意接受任何建议。唯一的限制应该是不要更改我提供的代码,因为解决方案应该是我所写内容的延续。
注意:由于我正在尝试做的事情应该使用未定义数量的矩阵(在这个例子中我只有 3 个但也可能是 1000 个),解决方案如E = [D{1,:};D{2,1}]
未被接受。
已找到我的问题的答案 here:
cat(1,D{:})