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

39 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 25 Sep 2012
文字列を含むセル配列があります。そのセル配列にいくつか空のセルが含まれています。空のセルを取り除く方法を教えて下さい。

Accepted Answer

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

More Answers (0)

Categories

Find more on 行列および配列 in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!