如何从单元格数组中删除一个元素?

时间:2016-02-02 00:50:30

标签: matlab cell-array

我有一些看起来像这样的1D单元格:

foo={'', 'some', 'important', '', 'data'}

我想摆脱分散在整个单元格数组中的空字符串,制作如下:

{'some', 'important', 'data'}

我知道如何找到空字符串,但是我所能找到的关于从单元格数组中删除元素的所有文档都会丢弃一些位置。 如何从单元格数组中删除元素,并将结果数组缩小以仅包含相关数据?

2 个答案:

答案 0 :(得分:2)

您可以使用strcmp(foo,'')识别空字符串。要从单元格数组中删除第一个元素,请使用foo(1)=[]。相比之下,foo{1}=[]将空列表分配给第一个元素。两者结合起来就是解决方案:

>> foo(strcmp(foo,''))=[]

foo = 

    'some'    'important'    'data'

答案 1 :(得分:2)

与@Daniel提到的一样,您可以使用strcmp识别空字符串。作为删除空字符串(即foo(is_empty_str)=[];)的替代方法,您可以选择非空字符串:

is_empty_str = strcmp(foo,'');
foo = foo(~is_empty_str);

两种方法都产生相同的结果。有些人可能更喜欢一个人,主要是编码风格。