使用混合数据从3D单元阵列中删除空白页面

时间:2015-02-18 11:07:44

标签: matlab 3d cell-array

我有一个带有混合数据的3D单元阵列。其中还有空细胞。第三维中还有mxn数组只有空单元格。我想删除它们:

C(:,:,1) = {'A' 'B'; [] []; 'C' 'D'};     
C(:,:,2) = {[] []; [] []; [] []};
C(:,:,3) = {[] 1; 2 []; [] 3};

should become

C(:,:,1) = {'A' 'B'; [] []; 'C' 'D'}
C(:,:,2) = {[] 1; 2 []; [] 3}

到目前为止我有这个解决方案

C1 = C(:,find(~all(cellfun('isempty',C),1)));
old_m = size(C,1);
old_n = size(C1,2)/size(C,2);
reshape(C1,old_m,old_n,[]);

我的意思是它基本上只有两行代码。我只是想知道是否有更优雅或更有效的方法?

由于

1 个答案:

答案 0 :(得分:2)

这 -

C(:,:,~all(all(cellfun('isempty',C),1),2))

或者这个 -

C(:,:,any(any(~cellfun('isempty',C),1),2))