Matlab从单元格数组

时间:2015-05-22 01:28:50

标签: string matlab cell-array

我有一个像这样显示的单元格数组

lists = 

    {240x1 cell}    {240x1 cell}

它包含字母字符串,而不是数字。

只有200个单元格具有实际内容,因此我需要截断单元格去除空单元格。

现在,lists(cellfun('isempty',lists)) = [];不起作用,也不适用于arrayfun。将'isempty'更改为@isempty也无效。但是,如果我将列表的每个单元格分隔为一个单元格,例如a = lists{1},则cellfun过程可以正常工作。

请注意,我不是在寻找具有200个240个单元格内容的特定情况的解决方案。

FWY,列表是textscan吐出的数组的子集。问题是初始textscan输出中的某些列确实有240个内容单元格,因此textscan默认为所有列的长度。

2 个答案:

答案 0 :(得分:2)

您需要拨打cellfun两次,一次在lists上,一次在其元素上

cellfun(@(x) x(~cellfun('isempty', x)), lists, 'uni', 0)

答案 1 :(得分:1)

循环遍历单元格,我假设您不需要递归执行此操作。

for i = numel(list):-1:1
    list{i}(cellfun(@isempty, list{i})) = [];
end