2012-07-16 74 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