2016-05-07 11 views
2

に電池要素を削除して、特定の列は、この検索と私はダブルスのセル配列を持っているMATLAB

abc = {[110;10];[20;110];[10];[220];[380];[15];[220];[110;15];[110;20];[110]}; 

のように見える文字列ここで私が110未満のすべての要素を削除したいと、私はこれを試してみましたステートメントabc(cellfun(@(x) any(x<110),abc),1) = [];

エラーが発生しました。ヌル割り当てには、コロン以外のインデックスを1つだけ設定できます。誰かがこれを説明して修正してもらえますか?

私は出力がこの

abc = {[110];[110];[];[220];[380];[];[220];[110];[110];[110]}; 

ようおかげであることを期待!

答えて

2

abc = abc(~cellfun(@(x) any(x<110),abc),1)

これは、論理インデックスを反転し、対応するエントリを選択します。

EDIT:あなたのコメントを提供した後、それを実行する必要があります。

abc_out = cellfun(@(x) x(x>=110), abc, 'UniformOutput', false) 
+1

私はこのABC = {[110]のようになり置く期待; [110]; []; [220]; [110]、[110]、[110]、[110]、[110] –

+0

私たちのアプローチでは、110未満の値があると推測されます.110未満のメンバだけでなく、セル全体の要素が削除されます。 –

+0

Anyは、各セルエントリ(つまりサブマトリックス)の 'any'要素をチェックします。これは、対応するサブエントリのインデックスを取得しないことを意味します。だから、ここであなたはどんな人でもあなたを助けません。したがって、再開として、単にセル構造を維持し、他の要素に触れることなく、<110の要素をすべて削除するだけです。 – tim

関連する問題