目次
ヒストグラムは統計学の基本であり、データの分布状況を把握するために使います。データの分布を集計するには「階数」(横軸)を定義します。この階数の要素は、ビン(もしくはカテゴリ、バケツ)と呼びます。ビンを算出する式は以下の式で表せます。
nはビン、mはデータの要素を示します。つまりk個のmの和がビンということです。
CPUでヒストグラムを実装するのは驚くほどシンプルです。下記のソースコードでは、ヒストグラムを集計している行はわずか1行です。
ヒストグラムの集計(CPU).
package com.book.jocl.histogram; import java.util.Random; public class HistogramCPU { private static final int BIN_SIZE = 256; private static final int LOCAL_SIZE = 128; private static final int DATA_SIZE = BIN_SIZE * LOCAL_SIZE * 64; private static final int[] data = new int[DATA_SIZE]; private static int[] histogram = new int[BIN_SIZE]; public static void main(String[] args) { generateSample(); for(int i = 0; i < DATA_SIZE; ++i) { histogram[data[i]]++; //(1) } for(int i = 0; i < BIN_SIZE; ++i) { System.out.println(histogram[i]); } } private static void generateSample() { Random rnd = new Random(); for(int i = 0; i < DATA_SIZE; i++) { data[i] = rnd.nextInt(256); //(2) } } }
上記のプログラムの出力は以下のようになります。
出力.
8070 8436 8147 8249 8201 ... 8300 8128 8361
Copyright 2018-2019, by Masaki Komatsu