空のセルを取り除くには、基本的には CELLFUN 関数と ISEMPTY 関数を使用します。
以下に、サンプルコードを記述します。
例1:ベクトルの場合
a = cell(5,1); % 文字列を含むセルを作成
a{1} = 'a';
a{2} = 'bb';
a{5} = 'ccc';
disp(a) % 変数を表示
x = find(cellfun('isempty',a)); % 空のセルを探す
a(x) = [] % 空のセルを取り除く
例2:配列(行列)の場合
>> C = cell(5,5); % サンプルデータの定義
>>C(2:4,2:4) = num2cell(randn(3,3))
C =
5×5 の cell 配列
[] [] [] [] []
[] [-2.3595] [-0.7847] [ 0.7939] []
[] [-1.4802] [-0.3295] [-0.9393] []
[] [-0.1560] [ 0.3857] [ 0.2511] []
[] [] [] [] []
>> ind = cellfun(@isempty,C); % セル内の空の値を検出
>> r_ind = all(ind,1); % 全ての行が 空の列を検出
>> C(:,r_ind) = []; % セルから削除
>> ind(:,r_ind) = []; % 上記に同期してインデックスも削除
>> c_ind = all(ind,2); % 全ての列が 空の行を検出
>> C(c_ind,:) = [] % セルから削除
C =
3×3 の cell 配列
[-2.3595] [-0.7847] [ 0.7939]
[-1.4802] [-0.3295] [-0.9393]
[-0.1560] [ 0.3857] [ 0.2511]