如何以我想要的方式删除单元格中的空元素

时间:2012-07-16 13:13:39

标签: matlab row cell

在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}

这不是我想要的

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

当您在向量上调用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)) = [];