2012-07-16 165 views
2

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

,它是N加时赛我想

回答

2

的问题是,线性指标中的行方向运行,即它贯穿于第一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)) = []; 
2

你可以试试这个什么: A(〜cellfun(“的isEmpty”,A))

+0

它应该等于A? A = A(〜cellfun('isempty',A)); ??? – user667222 2012-07-16 13:24:02