質問

どのようにしてセル配列に空のセルを検出していますか?私は、空のセルを削除するコマンドはa(1) = []ですけど、私はMATLABは自動的に空になっている細胞を検出するように見えることはできません。

背景: 私はa=cell(1,53)を使用してセル配列を事前に割り当て。 それから私は、ファイルをチェックし、それを読むためにif exist(filename(i))や関数textscanを使用していました。その結果、filename(i)は、空のセルの結果存在しないと、我々は次のファイルに移動するとき。

私は、すべてのファイルで、完成読んでいるときに

、私はaの空のセルを削除したいと思います。私は

if a(i)==[]を試してみました
役に立ちましたか?

解決

使用関数cellfunする

%# 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), : ) = [];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top