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

37 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team
MathWorks Support Team il 25 Set 2012
文字列を含むセル配列があります。そのセル配列にいくつか空のセルが含まれています。空のセルを取り除く方法を教えて下さい。

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 19 Giu 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]

Più risposte (0)

Categorie

Scopri di più su 行列および配列 in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!