昨日のプログラムの訂正
kuri.に指摘もらった部分を訂正してみた
for (count = 0; count != samples_to_output; count++) { for (i = 0; i < channels; i++) { if(bits<=8){ if ((x = fgetc(f)) == EOF) goto loopend; x -= 128; } else { if (fread(s, 2, 1, f) != 1) goto loopend; x = (short)(s[0] + 256 * s[1]); } histo[x+32768]++; total++; } }
として
double p = (double)histo[i] / total;
を計算しないと全体のエントロピーが出ない。
これでやってみると
all : 12.3109
となった。
あと差分なんだけど・・・。
わかんね。