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

37 vues (au cours des 30 derniers jours)
MathWorks Support Team
MathWorks Support Team le 25 Sep 2012
文字列を含むセル配列があります。そのセル配列にいくつか空のセルが含まれています。空のセルを取り除く方法を教えて下さい。

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 19 Juin 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]

Plus de réponses (0)

Catégories

En savoir plus sur 行列および配列 dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!