如何将一个元素与单元格数组中的其他行连接起来?

问题描述 投票:1回答:1

我有一个64x8的单元格数组C,其中每一行由以下维度组成,

说,

10x26 double    10x26 double    10x26 double    10x26 double    10x26 double    10x26 double    10x26 double    10x26 double

我使用以下命令将单元格数组的每个元素转换为矩阵,

D = cellfun(@(x) {x(:)}, C);

这给了我以下输出,

260x1 double    260x1 double    260x1 double    260x1 double    260x1 double    260x1 double    260x1 double    260x1 double

现在,我需要在单元格数组的8行中水平连接每个260x1元素,所以我会得到一个

单个单元格中的2080x1维度值

其中2080是260x8(沿8行)的乘积。这应该将64x8 Cell阵列转换为64x1阵列。

所以我必须得到如下的输出,

2080x1
2080x1
......
......
......
2080x1

我希望cellfun不能使用,因为它将函数应用于单元格数组的每个元素。但我需要连接单元格数组本身的元素,也让我知道是否有办法没有循环。

matlab matrix vector concatenation cell-array
1个回答
2
投票

这里的诀窍是使用vertcat

array = vertcat(cellArray{:});

{:}部分返回所有单元格的内容作为输出列表,vertcat将这些作为输入并沿第一维连接它们。如果你想沿着第二个维度连接,你可以使用horzcat,如果你想沿着其他维度连接,你可以使用通用的cat

horzcat(A, B, ...)vertcat(A, B, ...)分别是语法[A, B, ...][A; B; ...]的函数形式。

请注意,您也可以在原始C上使用这些功能而不使用cellfun。尝试使用这些方法来更好地了解它们的功能。

© www.soinside.com 2019 - 2024. All rights reserved.