2017-06-29 7 views
0

私は多くのセルを持つセル配列Aを持ち、各セルは50個の値を持っています。セルは、すべてゼロまたは他の数の組み合わせを持ちます。matlabにすべて0を含まないセル配列内のセルを返します

グラフにプロットしたいので、どのセルがすべてゼロでないかを調べる方法を探しています。私がセル配列のすべてのセルをプロットしようとすると、それはあまりにも処理するmatlabのための方法です。理想的には、すべてゼロで構成されていないA {1}、A {53}、A {235}などのリストが得られます。

ここでは、配列や行列でゼロ以外の値を見つける方法を見つけましたが、0以外の値を持つセルを見つけることについては何も見当たりませんでした。

ありがとうございました。

答えて

0

次にあなたが独占的にこのようなゼロを含まない細胞のインデックスを見つけることができるのは、例えば、データ

a=[{randi(10,1,50)} {randi(10,1,50)} {zeros(1,50)} {randi(10,1,50)}] 

を考えてみましょう:

nonzeroind=find(~cellfun(@(x) all(x==0),a)) 

セルに格納されている行列が複数の非単精度次元を持たない場合、wi

nonzeroind=find(~cellfun(@(x) all(all(x==0)),a)) 

セルに格納された行列のサイズは、このアプローチには関係ありません:あなたはこのようなあなたの最も高い次元セル内寸法を有するようall何度でもを適用することがあるでしょう。

+0

こんにちは、私を助けるために時間をとってくれてありがとうございました。私がnonzeroind =〜cellfun(@(x)all(x == 0)、a)を適用すると、すべてのセルがすべてゼロになってしまいます。私のセル配列には0以外の値を持つセルがあることを知っているので、何が起こっているのか分かりません。私がここで欠けているかもしれないもののためのアイデアはありますか?本当にありがとう! – Anonymous

+0

@Anonymous私のサンプルデータで動作するので、奇妙です。変数を.matファイルに保存して質問にアップロードできますか? 論理出力を線形インデックスに変換するために 'find'を追加しました。 – Max

0

セルに100セル×50行が含まれている場合は、それをダブルマトリックスに変換するだけではどうですか?あなたの質問に基づいて、それはすべての値がダブル、ちょうど数字であると思われるので。

まず、あなたのセルを作るダブル:

m=zeros(size(a,1),size(a,2)); 
    m=str2double(a); 
% from https://www.mathworks.com/matlabcentral/answers/18509-cell-conversion-to-double 
%Then you can just convert 0's to NaN's and plot all freely 
    m(m==0) = NaN; 
関連する問題