どのように私は、セル配列に空のセルを検出していますか?
-
25-09-2019 - |
質問
どのようにしてセル配列に空のセルを検出していますか?私は、空のセルを削除するコマンドはa(1) = []
ですけど、私はMATLABは自動的に空になっている細胞を検出するように見えることはできません。
背景:
私はa=cell(1,53)
を使用してセル配列を事前に割り当て。
それから私は、ファイルをチェックし、それを読むためにif exist(filename(i))
や関数textscanを使用していました。その結果、filename(i)
は、空のセルの結果存在しないと、我々は次のファイルに移動するとき。
、私はa
の空のセルを削除したいと思います。私は
if a(i)==[]
を試してみました 解決
%# find empty cells
emptyCells = cellfun(@isempty,a);
%# remove empty cells
a(emptyCells) = [];
注:a(i)==[]
は動作しません。あなたは、i番目のセルが空であるかどうかを知りたい場合は、セルのコンテンツにアクセスするために中括弧を使用する必要があります。あなたが代わりにコマンド==[]
を使用する必要がありますので、また、true
の評価するには、代わりにfalse
/ isempty
の、空に。要するに:a(i)==[]
isempty(a{i})
のように書き換えるべきである。
他のヒント
すべての上記の答えは、私はそれらを使用するとき、彼らは空のセルと、代わりに自分の実際の形状を維持する列状に位置し、私のセル配列のすべての要素を削除なぜなら私の場合には、間違っています。実際には、この種のアプローチを用いて、後にセルアレイ素子は、行セルベクトルになる傾向があります。
私は私の場合には正しく動作します。このアプローチを発見した。
ソース: https://groups.google.com/フォーラム/#!話題/ comp.softsys.matlab / p3NX0fI6u90する
アプローチます:
myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];