如何删除单元格空元素的方式,我想(how to delete empty elements in t

2019-09-19 13:01发布

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

这是不是我想要的

Answer 1:

的问题是,所述线性索引中的行方向上延伸,即,它贯穿第一conlumn,然后通过第二柱等

你可以看到这个当你调用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)) = [];


Answer 2:

你可以试试这个:A(〜cellfun( '的isEmpty',A))



文章来源: how to delete empty elements in the cell in a way i want
标签: matlab row cell