【问题标题】:How to horizontally concatenate matrices present inside each cell of a cell array?如何水平连接单元格数组的每个单元格内存在的矩阵?
【发布时间】:2018-05-27 10:12:35
【问题描述】:

我有一个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。我需要将它连接起来,比如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 单元格数组,我希望每个单元格的维度是260x8。

如果涉及重塑和循环,请建议如何执行此操作,请建议我如何执行此操作?

【问题讨论】:

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


    【解决方案1】:

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

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

    或者,如果上面的版本不太清楚,你可以使用reshape。

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

    【讨论】:

    • 感谢 Sardar 的帮助,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多