【问题标题】:How do I remove a certain column from matrices in a cell array in MATLAB?如何从 MATLAB 中的单元格数组中的矩阵中删除特定列?
【发布时间】:2016-07-16 10:29:50
【问题描述】:

如果我有一个包含少量矩阵的元胞数组。每个矩阵的行号不同,但列号相同。

C{1} = [30x4 double] C{2} = [25x4 double] C{3} = [32x4 double] ...etc

如果我想删除每个矩阵中的第一列和第三列,我该怎么办?

所以元胞数组会变成:

new_C{1} = [30x2 double] new_C{2} = [25x2 double] new_C{3} = [32x2 double]

new_C 中的这两列来自元胞数组 C 中的第二和第四列。

【问题讨论】:

    标签: arrays matlab matrix cell


    【解决方案1】:

    我假设您已经尝试了使用 for 循环的明显解决方案。 另一种方法是使用cellfun,结合logical indexing

    columns = false(1, 4);
    columns([2, 4]) = true;
    D = cellfun(@(m)m(:,columns), C, 'UniformOutput', 0)
    

    首先,我们为列建立一个索引向量。然后我们使用cellfun 将索引应用于元胞数组中的每个元素。我们使用'UniformOutput', 0,因为我们要获取另一个元胞数组(并且索引操作的结果不是标量)。

    【讨论】:

    • 谢谢!这行得通!是的,我确实尝试了一个 for 循环,但我在想是否有其他更有效的方法来解决它。抱歉,我应该提到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多