2017-11-15 10 views
1

나는 numerics.mathdotnet을 사용하여 정렬 된 데이터의 히스토그램을 계산합니다.히스토그램은 C로 데이터를 분류했습니다.

ROW2, X, Y, Z

C

ROW1, A, B, ...

따라 내 히스토그램을 계산으로 내 데이터 셋이 보이는의 칼럼 (4)에 생각한 [c, z, ...]가있는. 히스토그램 생성 후 그래프 (x 축 : 버킷, y 축 : 해당 버킷의 행 수)에 플롯되어 특정 버킷에 속하는 행을 가져 오려고합니다.

내 솔루션 : 버킷의 시작과 끝 (버킷 너비를 사용하여 계산 됨)을 funtion에 전달하고 모든 행을 반복하며 해당 행이 버킷 범위 내에 있는지 확인합니다.

문제점 : 일부 버킷 너비의 경우 0보다 큰 수를 표시하지만 가져올 때 해당 버킷 내에서 행을 찾지 못합니다.

질문 : 막대 그래프 결과와 함께 데이터를 가져올 수있는 방법이 있습니까? 예 : {bucketRange_start : X, bucketRange_end : 데이터 N : Y 카운트 [...]}

답변

0

샘플 프로그램 :

// try Histogram 
      //using MathNet.Numerics.Statistics; // required header 

      // create random data 
      Random RanGen = new Random(); 
      double[][] d = new double[4][]; 
      for (int i = 0; i < 4; i++) d[i] = new double[100]; 
      for (int i = 0; i < 4; i++) { for (int j = 0; j < 100; j++) d[i][j] = RanGen.NextDouble(); } 

      // create histogram for 3rd array = d[2] ; 
      Histogram h2 = new Histogram(d[2], 10); 

      // write bucket info including max, min and count 
      for (int b = 0; b < 10; b++) Console.WriteLine(h2[b].ToString()); 

      // Write row number and row data for all rows for which d3 value is in bucket with index = 7; 
      for (int j = 0; j < 100; j++) 
      { 
       if (h2.GetBucketIndexOf(d[2][j]) == 7) Console.WriteLine(j + " " + d[0][j].ToString() + " " + d[1][j].ToString() + " " + d[2][j].ToString() + " " + d[3][j].ToString() + " "); 
      }