2016-02-02 4 views
0

У меня есть некоторые 1D массивы ячеек, которые выглядят следующим образом:Как я могу удалить один элемент из массива ячеек?

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

Я хочу, чтобы избавиться от пустых строк, которые разбросаны по всей клетке массивов, делая что-то вроде этого:

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

I знать, как найти пустые строки, но вся документация, которую я смог найти относительно удаления элементов из массивов ячеек, оставляет что-то в положении, которое отбрасывается. Как я могу удалить элемент из массива ячеек и уменьшить результирующий массив, чтобы содержать только соответствующие данные?

ответ

2

Как @Daniel упоминалось, вы можете определить, пустые строки, используя strcmp. В качестве альтернативы удаления пустых строк (т.е. foo(is_empty_str)=[];), вы можете выбрать непустые из них:

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

Оба подхода дают одинаковый результат. Некоторые люди могут предпочесть один над другим, главным образом, в качестве стиля кодирования.

2

Вы можете определить пустые строки, используя strcmp(foo,''). Чтобы удалить первый элемент из массива ячеек, используйте foo(1)=[]. В сравнении foo{1}=[] присваивает пустой список первому элементу. Оба объединены решение:

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

foo = 

    'some' 'important' 'data'