セル配列から空のセル​を取り除くにはどうす​れば良いですか?

38 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2012 年 9 月 25 日
文字列を含むセル配列があります。そのセル配列にいくつか空のセルが含まれています。空のセルを取り除く方法を教えて下さい。

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 6 月 19 日
空のセルを取り除くには、基本的には 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]

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange行列および配列 についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!