【问题标题】:how to delete empty elements in the cell in a way i want如何以我想要的方式删除单元格中的空元素
【发布时间】:2012-07-15 08:20:23
【问题描述】:

在 MATLAB 中我有一个像这样的元胞数组

a = { 1 2 2 3 4 5 [] []
      2 4 5 4 3 2 4 5 
      4 5 4 3 4 [] [] []}

我想以某种方式删除空元素:

a = { 1 2 2 3 4 5 2 4 5 4 3 2 4 5 4 5 4 3 4}

但是当我使用这个时:a(cellfun(@isempty,a)) = []; 我得到的是这样的:

a = {1 2 4 2 4 5 2 5 4 3 4 3 4 3 4 5 2 4 5}

这不是我想要的

【问题讨论】:

    标签: matlab row cell


    【解决方案1】:

    问题是线性索引在行的方向上运行,即它通过第一列,然后通过第二列等等。

    当您在向量上调用reshape 时,您可以看到这一点:

    >> reshape([1 2 3 4 5 6 7 8 9],3,3)
    ans =
         1     4     7
         2     5     8
         3     6     9
    

    要达到你想要的结果,你需要在索引到它之前转置a

    a = a';
    a(cellfun(@isempty,a)) = [];
    

    【讨论】:

      【解决方案2】:

      你可以试试这个: A(~cellfun('isempty',A))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        相关资源
        最近更新 更多