2017-10-24 12 views
0

Myマットファイルには40,000行と2つの列が含まれています。私はそれを行番号 で読んで、最後の列の値を単一の行に取得する必要があります。続き 私のコードです:存在しないフィールド 'd'への参照

 for v = 1:40000 

      firstRowB = data.d(v,:) 

      if(firstRowB(1,2)==1) 
       count1=count1+1; 
      end 
      if(firstRowB(1,2)==2) 
       count2=count2+1; 
      end 

     end 

FirstRowBは、最後の列が1または2になり、その後、1

ことにより、それぞれのカウント値を増加させるが、私はこのエラーを取得しておくかどうかの行のチェックを取得します。

Reference to non-existent field 'd'. 
+0

'fieldnames(data)'と入力するとどうなりますか?または 'クラス(データ)'? – Adiel

+0

これは私がans = 'data'を得るものです。 –

+0

クラス(データ)を使用しています - 構造体 –

答えて

0

ベクトル化を使用できます(Matlabでは特に便利です)。あなたはちょうどあなたが行うことができますカウントするようにしたい場合は、trueは1、偽であるという事実の利点は、ゼロである撮影:

count1 = sum (data.d(:, 2) == 1) ; 
count2 = sum (data.d(:,2) == 2) ; 

実際には一般的にあなたが定義することができます。

getNumberOfElementsInLastColEqualTo = @(numb) sum (data.d(:,end) == numb) ; 

counts =arrayfun(getNumberOfElementsInLastColEqualTo , [1 2 ]); 

すると、この情報がお役に立てば幸いです。

関連する問題