2012-01-01 3 views
8

にセルから要素を削除する:は、最初の行の要素が0である、我々が使用可能な列を削除するには、マトリックスではMatlabの

ind2remove = (A(1,:) == 0); 
A(:,ind2remove) = []; 

私はA場合はセルであることをどのように行うのですか?私は、最初の行の要素が0

である列を削除したい、私が試した:

ind2remove = (A{1,:} == 0); 
A{:,ind2remove} = []; 

をしかし、私はエラーメッセージが表示されました:{ }を使用して

??? Error using ==> eq 
Too many input arguments. 

Error in ==> ind2remove = (A{1,:} == 0); 
+0

セルには、異なるデータ型を保持できます。あなたのセルはどのように見えますか?各セルに単一の要素(数値)がありますか?答えは簡単ですが、サンプルデータが必要です。 – abcd

+0

@yoda:セルAの最初の行には数値が含まれ、2番目の行には行列が含まれます – bzak

答えて

10

インデックスはあなたを与えますのコンテンツの場合、()を使用したインデックス作成では元のオブジェクトと同じタイプ、つまりAがセルの場合はA{i,j}が返されます保持し、A(i,j)は常にセルを返します。あなたは後者が必要です。

したがって、次のようにして、最初の行が0のすべての列を削除することができます。

A(:, cellfun(@(x)x==0, A(1,:))) = []; 

ここでは、最初の行の各セルは、コメントごとに1つの数値要素しか保持していないという前提があります。

+0

ありがとうございます。 – bzak

関連する問題