如何水平连接单元格数组中每个单元格内的矩阵?

时间:2017-12-13 13:40:33

标签: matlab for-loop concatenation reshape cell-array

我有一个1x8 Cell Array(A),其元素由以下维度组成。

10x13x2 double  10x13x2 double  10x13x2 double  10x13x2 double  10x13x2 double  10x13x2 double  10x13x2 double  10x13x2 double

我在A{1,1}....A{1,8}所在的地方,

val(:,:,1) = 10x13 matrix(130 values)
val(:,:,2) = Another 10x13 Matrix(130 values)

现在我想横向连接val(:,:,1) and val(:,:,2),以便在每个单元格中连接时得到总共260 values。我需要连接它,比如if val(:,:,1) is M and val(:,:2) is V。所以我需要像[M1 V1]..[MN VN]

那样水平连接

我希望对单元格数组中的所有8个元素都这样做。

所以,最后我必须得到一个1x8单元格数组的值,如下所示

MxNX1 MxNX1 MxNX1 MxNX1 MxNX1 MxNX1 MxNx1 MxNX1 

其中MXN = 260

所以最后我应该得到一个1x8 Cell数组,我希望每个单元格的维度为260x8

请建议如何做到这一点,如果它涉及重塑和循环,请建议我如何做到这一点?

1 个答案:

答案 0 :(得分:4)

3D阵列的

(:,:)表示法水平连接3D切片。使用cellfun或循环将其应用于A的所有单元格。

A = cellfun(@(x) {x(:,:)}, A);

或者,如果上述版本不太清楚,您可以使用reshape

A = cellfun(@(x) {reshape(x,10,[])}, A);