first commit

master
Choi lab 2 months ago
commit d7edf00cba
  1. 359
      .gitignore
  2. 189
      DFT.c
  3. 76
      FFT-kosatsu1.c
  4. 245
      FFT.c
  5. 271
      FFT3.c
  6. 252
      FFT4.c
  7. 270
      FFT_unified.c
  8. 192
      FFTh1.c
  9. 16
      LittleEndian_16kHz_16bit_1ch_NoHeader/README.txt
  10. 18
      LittleEndian_16kHz_16bit_1ch_NoHeader/kadai1.plot
  11. BIN
      LittleEndian_16kHz_16bit_1ch_NoHeader/sample01.png
  12. BIN
      LittleEndian_16kHz_16bit_1ch_NoHeader/sample_500Hz.sw
  13. 30
      SampleCodes/README.txt
  14. 34
      SampleCodes/bin2ascii-fopen.c
  15. 18
      SampleCodes/gnuplot-graph.gp.txt
  16. BIN
      SampleCodes/sample_1kHz.png
  17. BIN
      SampleCodes/sample_1kHz.sw
  18. 80001
      SampleCodes/sample_1kHz.txt
  19. BIN
      fig/ADconvFlow.png
  20. BIN
      fig/frame.png
  21. BIN
      fig/hanning.pdf
  22. BIN
      fig/spectrum.png
  23. 270
      gemini/FFT_unified.c
  24. 20
      gemini/README.txt
  25. BIN
      gemini/hatten1_color.png
  26. BIN
      gemini/hatten1_mono.png
  27. BIN
      gemini/j22330.sw
  28. 322
      gemini/kadai.c
  29. BIN
      gemini/kadai1.png
  30. 480
      gemini/kadai1.txt
  31. BIN
      gemini/kadai2_db.png
  32. 257
      gemini/kadai2_dft.txt
  33. 257
      gemini/kadai2_fft.txt
  34. BIN
      gemini/kadai2_linear.png
  35. BIN
      gemini/kadai3_db.png
  36. BIN
      gemini/kadai3_linear.png
  37. 257
      gemini/kadai3_window.txt
  38. 257
      gemini/kadai4_a.txt
  39. BIN
      gemini/kadai4_a_db.png
  40. 257
      gemini/kadai4_e.txt
  41. BIN
      gemini/kadai4_e_db.png
  42. 257
      gemini/kadai4_i.txt
  43. BIN
      gemini/kadai4_i_db.png
  44. 257
      gemini/kadai4_o.txt
  45. BIN
      gemini/kadai4_o_db.png
  46. 257
      gemini/kadai4_u.txt
  47. BIN
      gemini/kadai4_u_db.png
  48. 1136
      gemini/main.tex
  49. 92
      gemini/plot.plt
  50. BIN
      gemini/sample01.sw
  51. 112746
      gemini/spectrogram.txt
  52. BIN
      j22330.sw
  53. BIN
      j22330.wav
  54. 20
      j22330/README.txt
  55. BIN
      j22330/j22330.sw
  56. BIN
      j22330/j22330Voice.zip
  57. 322
      j22330/kadai.c
  58. 76
      j22330/old/FFT-kosatsu1.c
  59. 245
      j22330/old/FFT.c
  60. 268
      j22330/old/FFT3.c
  61. 182
      j22330/old/FFT4.c
  62. 34
      j22330/old/README.txt
  63. 16
      j22330/old/data-log.plt
  64. 15
      j22330/old/data.plt
  65. BIN
      j22330/old/j22330Voice.zip
  66. BIN
      j22330/old/j22330VoiceReport.pdf
  67. 18
      j22330/old/kadai1.plt
  68. 76
      j22330/old/power.c
  69. 92
      j22330/plot.plt
  70. BIN
      j22330/sample01.sw
  71. BIN
      kadai1.png
  72. 16
      kadai2 copy.plot
  73. BIN
      kadai2-1dft.png
  74. BIN
      kadai2-1fft.png
  75. BIN
      kadai2-2dft.png
  76. BIN
      kadai2-2fft.png
  77. BIN
      kadai2-time.png
  78. 16
      kadai2.plot
  79. BIN
      kadai3-windowed-log.png
  80. BIN
      kadai3-windowed.png
  81. 512
      kadai3.txt
  82. BIN
      kadai4-a.png
  83. BIN
      kadai4-a_log.png
  84. BIN
      kadai4-e.png
  85. BIN
      kadai4-e_log.png
  86. BIN
      kadai4-i.png
  87. BIN
      kadai4-i_log.png
  88. BIN
      kadai4-o.png
  89. BIN
      kadai4-o_log.png
  90. BIN
      kadai4-u.png
  91. BIN
      kadai4-u_log.png
  92. 512
      kadai4_a.txt
  93. 512
      kadai4_e.txt
  94. 512
      kadai4_i.txt
  95. 512
      kadai4_o.txt
  96. 512
      kadai4_u.txt
  97. BIN
      kosatsu1.png
  98. 76
      power.c
  99. 512
      result_amp_file1.txt
  100. 512
      result_seek_a.txt
  101. Some files were not shown because too many files have changed in this diff Show More

359
.gitignore vendored

@ -0,0 +1,359 @@
# ---> C
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
# ---> TeX
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplot
*.gnuplot
*.table
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.glog
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# newpax
*.newpax
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# svg
svg-inkscape/
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# titletoc
*.ptc
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# xwatermark package
*.xwm
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib
# vscode
.vscode/

189
DFT.c

@ -0,0 +1,189 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#define LENGTH 8 /* 信号長 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
void initComplexList(Complex*, int);
Complex getComplex(double, double);
Complex addComplex(Complex, Complex);
Complex timeComplex(Complex, Complex);
Complex divComplexByReal(Complex, double);
Complex powComplex(Complex, int);
void printComplex(Complex);
void genTwiddleTable(Complex*, int);
Complex calcTwiddlePower(Complex*, int, int);
void calcDFT(Complex*, Complex*, int);
void calcIDFT(Complex*, Complex*, int);
void printTable(char*, char, Complex*, int);
int main(void) {
/* 信号長 */
int N = LENGTH;
/* 信号配列 */
Complex x[LENGTH] = {getComplex(0, 0), getComplex(1, 0), getComplex(2, 0), getComplex(3, 0), getComplex(4, 0), getComplex(5, 0), getComplex(6, 0), getComplex(7, 0)};
/* N点DFT係数 */
Complex c[LENGTH];
/* 復元された信号配列 */
Complex idft_x[LENGTH];
initComplexList(c, N);
initComplexList(idft_x, N);
printTable("DATA", 'n', x, N);
calcDFT(x, c, N);
printTable("DFT", 'k', c, N);
calcIDFT(c, idft_x, N);
printTable("IDFT", 'n', idft_x, N);
return 0;
}
/* 複素数配列を0+j0で初期化 */
void initComplexList(Complex *list, int N) {
int i;
for(i = 0; i < N; i++) {
list[i] = getComplex(0.0, 0.0);
}
}
/* 第一引数を実部,第二引数を虚部とする複素数を返す */
Complex getComplex(double real, double imaginary) {
Complex z;
z.r = real;
z.i = imaginary;
return z;
}
/* 第一引数と第二引数の和を返す */
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
/* 第一引数と第二引数の積を返す */
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
/* 第一引数(複素数)を第二引数(実数)で割った値(複素数)を返す */
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if(pow == 0) return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for(i = 0; i < p-1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if(pow < 0)
ret.i = -ret.i;
return ret;
}
/* 複素数出力 */
void printComplex(Complex z) {
if(z.i < 0) {
printf("%f-j%f\n", z.r, -z.i);
} else {
printf("%f+j%f\n", z.r, z.i);
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void calcDFT(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
printTable("TWIDDLE", 'i', W, N);
/* 信号長で反復 */
for(k = 0; k < N; k++) {
/* シグマループ */
for(n = 0; n < N; n++) {
c[k] = addComplex(
c[k],
timeComplex(
x[n],
calcTwiddlePower(
W, k, n
)
)
);
}
}
}
/* 離散フーリエ逆変換 */
void calcIDFT(Complex *c, Complex *x, int N) {
int n, k;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for(n = 0; n < N; n++) {
/* シグマループ */
for(k = 0; k < N; k++) {
x[n] = addComplex(
x[n],
timeComplex(
c[k],
calcTwiddlePower(
W, n, -k
)
)
);
}
/* 総和をNで割る */
x[n] = divComplexByReal(x[n], (double)N);
}
}
/* 複素数テーブル出力 */
void printTable(char *name, char index, Complex *z, int N) {
int i;
printf("----- BEGIN %s TABLE -----\n", name);
for(i = 0; i < N; i++) {
printf("%c = %d : ", index, i);
printComplex(z[i]);
}
printf("----- END %s TABLE -----\n", name);
}

@ -0,0 +1,76 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
/* プロトタイプ宣言 */
double calcAmpPower(short *x, int N);
void applyWindow(short *x, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double beforePower, afterPower;
int i;
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
beforePower = calcAmpPower(input, N);
applyWindow(input, N);
afterPower = calcAmpPower(input, N);
printf("BEFORE : %16f\n", beforePower);
printf("AFTER : %16f\n", afterPower);
printf("DIFF : %16f\n", beforePower - afterPower);
printf("RATIO : %16f\n", afterPower / beforePower);
fclose(fp);
return 0;
}
/* short型配列の平均パワーを求める関数 */
double calcAmpPower(short *x, int N) {
double amp;
double power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i] * x[i];
power += amp;
}
return power / N;
}
/* 配列にハニング窓を適用 */
void applyWindow(short *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1)); // ハニング窓
x[i] *= w;
}
}

245
FFT.c

@ -0,0 +1,245 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void genTwiddleTable(Complex *, int);
Complex calcTwiddlePower(Complex *, int, int);
void dft(Complex *, Complex *, int);
Complex getComplex(double r, double i);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
Complex powComplex(Complex, int);
int main(int argc, char *argv[]) {
int N = LENGTH; /* 信号長 */
double amp; /* 振幅 */
int i;
/* 時間計測用変数 */
LARGE_INTEGER start, end, freq;
double elapsedTime;
if (!QueryPerformanceFrequency(&freq)) {
fprintf(stderr, "High-resolution timer not supported.\n");
return 1;
}
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
/* N点DFT係数 */
Complex c[LENGTH];
/* DFT係数の初期化 */
for (i = 0; i < N; i++) {
c[i] = getComplex(0.0, 0.0);
}
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
/* 音声データを複素数型に変換 */
for (int i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
QueryPerformanceCounter(&start);
dft(x, c, N);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("DFT Elapsed time: %f seconds\n", elapsedTime);
QueryPerformanceCounter(&start);
fft(x, N, 0);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("FFT Elapsed ti82me: %f seconds\n", elapsedTime);
// for(int i = 0; i < N; i++) {
// amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
// printf("%f\n", amp);
// }
fclose(fp);
return 0;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
/* 逆方向カウントアップ */
k = N >> 1;
while (k <= j && k > 0) { /* もしjのk番目のビットが 1 だったら */
j -= k; /* そのビットを 0 にする */
k >>= 1; /* 次のビットに移る */
}
j += k; /* 0 を見つけたら 1 にする */
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage; /* 現在のブロックのサイズ */
int block2 = block >> 1; /* ブロックサイズの半分 */
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta); /* 基本となる回転子 */
/* 各ブロックの計算 */
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
/* バタフライ演算の本体 */
Complex u = x[k + j]; /* X_0[k] */
Complex v =
timeComplex(w, x[k + j + block2]); /* W^k * X_1[k] */
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
/* 逆変換の場合、最後に N で割る */
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void dft(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for (k = 0; k < N; k++) {
/* シグマループ */
for (n = 0; n < N; n++) {
c[k] =
addComplex(c[k], timeComplex(x[n], calcTwiddlePower(W, k, n)));
}
}
}
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
Complex cexptheta(double theta) { return getComplex(cos(theta), sin(theta)); }
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if (pow == 0)
return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for (i = 0; i < p - 1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if (pow < 0)
ret.i = -ret.i;
return ret;
}

271
FFT3.c

@ -0,0 +1,271 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
Complex getComplex(double r, double i);
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void genTwiddleTable(Complex*, int);
Complex calcTwiddlePower(Complex*, int, int);
void dft(Complex*, Complex*, int);
void applyWindow(Complex *x, int N);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
Complex powComplex(Complex, int);
void printComplex(Complex z);
void printTable(char *name, char index, Complex *z, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double amp;
int i;
FILE *fp = NULL;
/* file open */
if ( argc > 1 ) {
fp = fopen ( argv[1], "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (%s)\n", argv[1] );
exit ( 1 );
}
} else {
fprintf ( stderr, "Usage: %s input-filename\n", argv[0] );
exit ( 1 );
}
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
/* N点DFT係数 */
Complex c[LENGTH];
for(i = 0; i < N; i++) {
c[i] = getComplex(0.0, 0.0);
}
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
/* 音声データを複素数領域に変換 */
for(int i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
//dft(x, c, N);
applyWindow(x, N);
fft(x, N, 0);
for(int i = 0; i < N; i++) {
amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
printf("%f\n", amp);
}
fclose(fp);
return 0;
}
/* 第一引数を実部,第二引数を虚部とする複素数を返す */
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
j = 0;
Complex temp;
for(i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int s = 1; (1 << s) <= N; s++) {
int m = 1 << s; // 現在のブロックのサイズ
int m2 = m >> 1; // ブロックサイズの半分
double theta = (inverse ? 2.0 : -2.0) * M_PI / m;
Complex wm = cexptheta(theta); // 基本となる回転因子
// 各ブロックの計算
for (int k = 0; k < N; k += m) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < m2; j++) {
// バタフライ演算の本体
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + m2]);
x[k + j] = addComplex(u, v); // 上側
x[k + j + m2] = subComplex(u, v); // 下側
w = timeComplex(w, wm); // 回転因子を更新
}
}
}
// 3. 逆変換の場合、最後に n で割る
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void dft(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for(k = 0; k < N; k++) {
/* シグマループ */
for(n = 0; n < N; n++) {
c[k] = addComplex(
c[k],
timeComplex(
x[n],
calcTwiddlePower(
W, k, n
)
)
);
}
}
}
/* 配列にハニング窓を適用 */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1)); // ハニング窓
x[i].r *= w;
x[i].i *= w;
}
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if(pow == 0) return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for(i = 0; i < p-1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if(pow < 0)
ret.i = -ret.i;
return ret;
}
/* 複素数出力 */
void printComplex(Complex z) {
if(z.i < 0) {
printf("%f-j%f\n", z.r, -z.i);
} else {
printf("%f+j%f\n", z.r, z.i);
}
}
/* 複素数テーブル出力 */
void printTable(char *name, char index, Complex *z, int N) {
int i;
printf("----- BEGIN %s TABLE -----\n", name);
for(i = 0; i < N; i++) {
printf("%c = %d : ", index, i);
printComplex(z[i]);
}
printf("----- END %s TABLE -----\n", name);
}

252
FFT4.c

@ -0,0 +1,252 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
Complex getComplex(double r, double i);
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void genTwiddleTable(Complex*, int);
Complex calcTwiddlePower(Complex*, int, int);
void dft(Complex*, Complex*, int);
void applyWindow(Complex *x, int N);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
Complex powComplex(Complex, int);
int main() {
int N = LENGTH; /* 信号長 */
double amp; /* 振幅 */
int i;
double start_sec = 2.454; /* 読み込む音声の開始位置 [秒] */
long fs = 16000; /* 標本化周波数 */
long bytes_per_sample = 2; /* 16bitなので2バイト */
long start_byte = (long)(start_sec * fs * bytes_per_sample); /* 指定時刻の開始位置バイト */
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
/* N点DFT係数 */
Complex c[LENGTH];
FILE *fp = fopen ( "j22330.sw", "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (j22330.sw)\n" );
exit ( 1 );
}
/* DFT係数の初期化 */
for(i = 0; i < N; i++) {
c[i] = getComplex(0.0, 0.0);
}
/* 読み込む位置にファイルポインタを移動 */
fseek(fp, start_byte, SEEK_SET);
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (j22330.sw)\n");
fclose(fp);
exit(1);
}
/* 音声データを複素数型に変換 */
for(int i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
/* 窓関数の適用 */
applyWindow(x, N);
/* FFTの実行 */
fft(x, N, 0);
/* 振幅スペクトルの出力 */
for(int i = 0; i < N; i++) {
amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
printf("%f\n", amp);
}
fclose(fp);
return 0;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for(i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
/* 逆方向カウントアップ */
k = N >> 1;
while (k <= j && k > 0) { /* もしjのk番目のビットが 1 だったら */
j -= k; /* そのビットを 0 にする */
k >>= 1; /* 次のビットに移る */
}
j += k; /* 0 を見つけたら 1 にする */
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage; /* 現在のブロックのサイズ */
int block2 = block >> 1; /* ブロックサイズの半分 */
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta); /* 基本となる回転子 */
/* 各ブロックの計算 */
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
/* バタフライ演算の本体 */
Complex u = x[k + j]; /* X_0[k] */
Complex v = timeComplex(w, x[k + j + block2]); /* W^k * X_1[k] */
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
/* 逆変換の場合、最後に N で割る */
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void dft(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for(k = 0; k < N; k++) {
/* シグマループ */
for(n = 0; n < N; n++) {
c[k] = addComplex(
c[k],
timeComplex(
x[n],
calcTwiddlePower(
W, k, n
)
)
);
}
}
}
/* 配列にハニング窓を適用 */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1));
x[i].r *= w;
x[i].i *= w;
}
}
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if(pow == 0) return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for(i = 0; i < p-1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if(pow < 0)
ret.i = -ret.i;
return ret;
}

@ -0,0 +1,270 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
Complex getComplex(double r, double i) {
return (Complex){r, i};
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
/* 窓関数(Complex型配列専用に統合) */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2.0 * M_PI * i / (N - 1)); // ハニング窓
x[i].r *= w;
x[i].i *= w;
}
}
/* 平均パワー計算(Complex型配列専用に統合) */
double calcAmpPower(Complex *x, int N) {
double power = 0.0;
for (int i = 0; i < N; i++) {
power += (x[i].r * x[i].r + x[i].i * x[i].i);
}
return power / N;
}
/* ビット逆順並び替え */
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
/* 高速フーリエ変換 */
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage;
int block2 = block >> 1;
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta);
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + block2]);
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 離散フーリエ変換
*
*
*/
void dft(Complex *x, Complex *c, int N) {
for (int k = 0; k < N; k++) {
c[k] = getComplex(0.0, 0.0);
for (int n = 0; n < N; n++) {
double theta = -2.0 * M_PI * k * n / N;
Complex w = cexptheta(theta);
c[k] = addComplex(c[k], timeComplex(x[n], w));
}
}
}
/* 結果出力用ユーティリティ関数 */
void saveAmpSpectrum(const char *filename, Complex *x, int N) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
fprintf(stderr, "Failed to open output file: %s\n", filename);
return;
}
for (int i = 0; i < N; i++) {
double amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
fprintf(fp, "%f\n", amp);
}
fclose(fp);
printf(" -> Saved amplitude spectrum to %s\n", filename);
}
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <file1.sw> <file2.sw>\n", argv[0]);
return 1;
}
int N = LENGTH;
char *file1 = argv[1];
char *file2 = argv[2];
short input[LENGTH];
Complex x[LENGTH];
Complex c[LENGTH];
printf("========== FFT UNIFIED PROGRAM ==========\n");
printf("File 1: %s\n", file1);
printf("File 2: %s\n", file2);
printf("=========================================\n\n");
/* ----------------------------------------------------
* 1 & 2 & 3: FFT結果 (file1を使用)
* ---------------------------------------------------- */
printf("[Mode: File1 Analysis (%s)]\n", file1);
FILE *fp1 = fopen(file1, "rb");
if (fp1 == NULL) {
fprintf(stderr, "File open error (%s)\n", file1);
exit(1);
}
if (fread(input, sizeof(short), N, fp1) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", file1);
fclose(fp1);
exit(1);
}
fclose(fp1);
// --- 実行時間の比較 (Time Mode) ---
LARGE_INTEGER start, end, freq;
double elapsedTime;
QueryPerformanceFrequency(&freq);
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
QueryPerformanceCounter(&start);
dft(x, c, N);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("\n--- Execution Time Comparison ---\n");
printf(" DFT Elapsed time: %f seconds\n", elapsedTime);
QueryPerformanceCounter(&start);
fft(x, N, 0);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf(" FFT Elapsed time: %f seconds\n", elapsedTime);
// --- 窓関数適用とパワー比較 (Power Mode) ---
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
double beforePower = calcAmpPower(x, N);
applyWindow(x, N);
double afterPower = calcAmpPower(x, N);
printf("\n--- Power Analysis (Window Application) ---\n");
printf(" BEFORE : %16f\n", beforePower);
printf(" AFTER : %16f\n", afterPower);
printf(" DIFF : %16f\n", beforePower - afterPower);
printf(" RATIO : %16f\n", afterPower / beforePower);
// --- FFT振幅スペクトル出力 (Amp Mode) ---
printf("\n--- Amplitude Spectrum Output ---\n");
fft(x, N, 0); // すでに窓関数適用済みの配列に対してFFTを実行
saveAmpSpectrum("result_amp_file1.txt", x, N);
/* ----------------------------------------------------
* 4: (file2を使用)
* ---------------------------------------------------- */
printf("\n[Mode: Seek Analysis (%s)]\n", file2);
FILE *fp2 = fopen(file2, "rb");
if (fp2 == NULL) {
fprintf(stderr, "File open error (%s)\n", file2);
exit(1);
}
typedef struct {
double time_sec;
const char *vowel;
} SeekTarget;
// 指定された5つの時刻を定義
SeekTarget targets[] = {
{0.361, "a"}, // あ
{0.969, "i"}, // い
{1.415, "u"}, // う
{1.936, "e"}, // え
{2.431, "o"} // お
};
long fs = 16000;
long bytes_per_sample = 2;
for (int t = 0; t < 5; t++) {
long start_byte = (long)(targets[t].time_sec * fs * bytes_per_sample);
fseek(fp2, start_byte, SEEK_SET);
if (fread(input, sizeof(short), N, fp2) != (size_t)N) {
fprintf(stderr, "File read error (%s) at %f s\n", file2, targets[t].time_sec);
continue;
}
// Complex型への変換、窓関数の適用、FFTの実行
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
applyWindow(x, N);
fft(x, N, 0);
char out_filename[256];
sprintf(out_filename, "result_seek_%s.txt", targets[t].vowel);
saveAmpSpectrum(out_filename, x, N);
}
fclose(fp2);
printf("\nAll analyses finished successfully.\n");
return 0;
}

@ -0,0 +1,192 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
Complex getComplex(double r, double i);
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void applyWindow(Complex *x, int N);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
int main() {
int N = LENGTH; /* 信号長 */
double amp; /* 振幅 */
int i;
int j;
double start_sec = 2.454; /* 読み込む音声の開始位置 [秒] */
long fs = 16000; /* 標本化周波数 */
long bytes_per_sample = 2; /* 16bitなので2バイト */
long start_byte = (long)(start_sec * fs * bytes_per_sample); /* 指定時刻の開始位置バイト */
long frame_length = 32; /* フレーム長[msec] */
long frame_period = 10; /* フレーム周期[msec] */
long frame_length_samples = (long)(frame_length * fs / 1000); /* フレーム長[サンプル] */
long frame_period_samples = (long)(frame_period * fs / 1000); /* フレーム周期[サンプル] */
long frame_period_bytes = frame_period_samples * bytes_per_sample; /* フレーム周期[バイト] */
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
FILE *fp = fopen ( "j22330.sw", "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (j22330.sw)\n" );
exit ( 1 );
}
/* 読み込む位置にファイルポインタを移動 */
fseek(fp, start_byte, SEEK_SET);
for() {
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (j22330.sw)\n");
fclose(fp);
exit(1);
}
/* 音声データを複素数型に変換 */
for(i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
/* 窓関数の適用 */
applyWindow(x, N);
/* FFTの実行 */
fft(x, N, 0);
/* 振幅スペクトルの出力 */
for(i = 0; i < N; i++) {
amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
printf("%f\n", amp);
}
}
fclose(fp);
return 0;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for(i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
/* 逆方向カウントアップ */
k = N >> 1;
while (k <= j && k > 0) { /* もしjのk番目のビットが 1 だったら */
j -= k; /* そのビットを 0 にする */
k >>= 1; /* 次のビットに移る */
}
j += k; /* 0 を見つけたら 1 にする */
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage; /* 現在のブロックのサイズ */
int block2 = block >> 1; /* ブロックサイズの半分 */
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta); /* 基本となる回転子 */
/* 各ブロックの計算 */
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
/* バタフライ演算の本体 */
Complex u = x[k + j]; /* X_0[k] */
Complex v = timeComplex(w, x[k + j + block2]); /* W^k * X_1[k] */
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
/* 逆変換の場合、最後に N で割る */
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 配列にハニング窓を適用 */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1));
x[i].r *= w;
x[i].i *= w;
}
}
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}

@ -0,0 +1,16 @@
<このフォルダの中身>
sample01.sw
... 分析対象の信号1(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
すべての実験課題において使用
課題05(スペクトログラムの可視化)においてもプログラム動作検証として結果を出力する
sample_1kHz.sw
... 1kHzの正弦波信号(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
ファイル読み込みを含む、プログラムの動作確認用として提供
sample_500Hz.sw
... 500Hzの正弦波信号(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
ファイル読み込みを含む、プログラムの動作確認用として提供
以上。

@ -0,0 +1,18 @@
set term png
set output "sample01.png"
fs = 16000.0
set xlabel "time [msec]"
set ylabel "amplitude"
set xrange [0:30]
set yrange [-1:1]
set size ratio 0.3
plot "sample01.sw" binary format="%int16" every ::::479 \
using ($0 * 1000.0 / fs):($1/32767.0) \
with lines notitle

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -0,0 +1,30 @@
<このフォルダの中身>
bin2ascii-fopen.c
... バイナリデータ読み込み関数(fread)のサンプル
gnuplot-graph.gp.txt
... グラフソフトウェア gnuplot によるデータの可視化スクリプト記述例
sample_1kHz.sw
... 1kHzの正弦波信号(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
<プログラム bin2ascii>
コンパイル(gcc)
% gcc -Wall -pedantic -o bin2ascii-fopen bin2ascii-fopen.c
... 実行可能形式ファイル bin2ascii ができる
実行例
% .\bin2ascii-fopen sample_1kHz.sw > sample_1kHz.txt
... バイナリデータ sample_1kHz.sw を読み込み、
テキストデータ sample_1kHz.txt を出力
<gnuplotスクリプト>
実行例
% gnuplot gnuplot-graph.gp.txt
... 事前にテキストデータ sample_1kHz.txt があれば、
PNGファイル sample-1kHz.png を出力
以上。

@ -0,0 +1,34 @@
/* バイナリデータ(short型)を読み込み、整数値のテキストを出力
*/
#include <stdio.h>
#include <stdlib.h>
int main ( int argc, char *argv[] ) {
short x;
FILE *fp = NULL;
/* file open */
if ( argc > 1 ) {
fp = fopen ( argv[1], "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (%s)\n", argv[1] );
exit ( 1 );
}
} else {
fprintf ( stderr, "Usage: %s input-filename\n", argv[0] );
exit ( 1 );
}
/* read & write */
while ( fread ( &x, sizeof ( short ), 1, fp ) == 1 ) {
printf ( "%d\n", x );
}
/* file close */
fclose ( fp );
return 0;
}
/* EOF */
/*
$ gcc -o bin2ascii-fopen bin2ascii-fopen.c
$ bin2ascii-fopen sample01.sw > sample01.asc
*/

@ -0,0 +1,18 @@
# gnuplot によるグラフ描画のスクリプト記述例
# (gnuplotのコマンド等仕様は各自で調べて使う)
#
# 使用例:
# % gnuplot gnuplot-graph.gp.txt
#
### 保存形式 png
set term png
### 保存ファイル名
set output "sample_1kHz.png"
### X軸とY軸の軸名を指定
set xlabel "#samples"
set ylabel "amp."
###
plot [0:511] "sample_1kHz.txt" notitle with lines

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

@ -0,0 +1,270 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
Complex getComplex(double r, double i) {
return (Complex){r, i};
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
/* 窓関数(Complex型配列専用に統合) */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2.0 * M_PI * i / (N - 1)); // ハニング窓
x[i].r *= w;
x[i].i *= w;
}
}
/* 平均パワー計算(Complex型配列専用に統合) */
double calcAmpPower(Complex *x, int N) {
double power = 0.0;
for (int i = 0; i < N; i++) {
power += (x[i].r * x[i].r + x[i].i * x[i].i);
}
return power / N;
}
/* ビット逆順並び替え */
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
/* 高速フーリエ変換 */
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage;
int block2 = block >> 1;
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta);
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + block2]);
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 離散フーリエ変換
*
*
*/
void dft(Complex *x, Complex *c, int N) {
for (int k = 0; k < N; k++) {
c[k] = getComplex(0.0, 0.0);
for (int n = 0; n < N; n++) {
double theta = -2.0 * M_PI * k * n / N;
Complex w = cexptheta(theta);
c[k] = addComplex(c[k], timeComplex(x[n], w));
}
}
}
/* 結果出力用ユーティリティ関数 */
void saveAmpSpectrum(const char *filename, Complex *x, int N) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
fprintf(stderr, "Failed to open output file: %s\n", filename);
return;
}
for (int i = 0; i < N; i++) {
double amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
fprintf(fp, "%f\n", amp);
}
fclose(fp);
printf(" -> Saved amplitude spectrum to %s\n", filename);
}
/* ----------------------------------------------------
*
* ---------------------------------------------------- */
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <file1.sw> <file2.sw>\n", argv[0]);
return 1;
}
int N = LENGTH;
char *file1 = argv[1];
char *file2 = argv[2];
short input[LENGTH];
Complex x[LENGTH];
Complex c[LENGTH];
printf("========== FFT UNIFIED PROGRAM ==========\n");
printf("File 1: %s\n", file1);
printf("File 2: %s\n", file2);
printf("=========================================\n\n");
/* ----------------------------------------------------
* 1 & 2 & 3: FFT結果 (file1を使用)
* ---------------------------------------------------- */
printf("[Mode: File1 Analysis (%s)]\n", file1);
FILE *fp1 = fopen(file1, "rb");
if (fp1 == NULL) {
fprintf(stderr, "File open error (%s)\n", file1);
exit(1);
}
if (fread(input, sizeof(short), N, fp1) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", file1);
fclose(fp1);
exit(1);
}
fclose(fp1);
// --- 実行時間の比較 (Time Mode) ---
LARGE_INTEGER start, end, freq;
double elapsedTime;
QueryPerformanceFrequency(&freq);
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
QueryPerformanceCounter(&start);
dft(x, c, N);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("\n--- Execution Time Comparison ---\n");
printf(" DFT Elapsed time: %f seconds\n", elapsedTime);
QueryPerformanceCounter(&start);
fft(x, N, 0);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf(" FFT Elapsed time: %f seconds\n", elapsedTime);
// --- 窓関数適用とパワー比較 (Power Mode) ---
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
double beforePower = calcAmpPower(x, N);
applyWindow(x, N);
double afterPower = calcAmpPower(x, N);
printf("\n--- Power Analysis (Window Application) ---\n");
printf(" BEFORE : %16f\n", beforePower);
printf(" AFTER : %16f\n", afterPower);
printf(" DIFF : %16f\n", beforePower - afterPower);
printf(" RATIO : %16f\n", afterPower / beforePower);
// --- FFT振幅スペクトル出力 (Amp Mode) ---
printf("\n--- Amplitude Spectrum Output ---\n");
fft(x, N, 0); // すでに窓関数適用済みの配列に対してFFTを実行
saveAmpSpectrum("result_amp_file1.txt", x, N);
/* ----------------------------------------------------
* 4: (file2を使用)
* ---------------------------------------------------- */
printf("\n[Mode: Seek Analysis (%s)]\n", file2);
FILE *fp2 = fopen(file2, "rb");
if (fp2 == NULL) {
fprintf(stderr, "File open error (%s)\n", file2);
exit(1);
}
typedef struct {
double time_sec;
const char *vowel;
} SeekTarget;
// 指定された5つの時刻を定義
SeekTarget targets[] = {
{0.361, "a"}, // あ
{0.969, "i"}, // い
{1.415, "u"}, // う
{1.936, "e"}, // え
{2.431, "o"} // お
};
long fs = 16000;
long bytes_per_sample = 2;
for (int t = 0; t < 5; t++) {
long start_byte = (long)(targets[t].time_sec * fs * bytes_per_sample);
fseek(fp2, start_byte, SEEK_SET);
if (fread(input, sizeof(short), N, fp2) != (size_t)N) {
fprintf(stderr, "File read error (%s) at %f s\n", file2, targets[t].time_sec);
continue;
}
// Complex型への変換、窓関数の適用、FFTの実行
for (int i = 0; i < N; i++) x[i] = getComplex(input[i], 0);
applyWindow(x, N);
fft(x, N, 0);
char out_filename[256];
sprintf(out_filename, "result_seek_%s.txt", targets[t].vowel);
saveAmpSpectrum(out_filename, x, N);
}
fclose(fp2);
printf("\nAll analyses finished successfully.\n");
return 0;
}

@ -0,0 +1,20 @@
<このフォルダの中身>
kadai.c
... 音声データ分析を一括で行うC言語プログラムソースコード
課題1〜4、発展課題1(各自の音声のスペクトログラム可視化)、および考察1のすべての処理を含む
plot.plt
... 分析結果のデータを可視化するための一括gnuplotスクリプト
課題1〜4のグラフ、および発展課題1のモノクロ・カラーのスペクトログラムの描画処理を含む
sample01.sw
... 分析対象の信号1(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
課題1~3において使用
j22330.sw
... レポート作成者本人の音声データ(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
「あいうえお」の単独発声および連続発声を収録
課題4(各母音の分析)および発展課題1(スペクトログラムの可視化)において分析対象として使用
以上。

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

@ -0,0 +1,322 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
Complex getComplex(double r, double i) {
return (Complex){r, i};
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2.0 * M_PI * i / (N - 1));
x[i].r *= w;
x[i].i *= w;
}
}
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage;
int block2 = block >> 1;
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta);
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + block2]);
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
if (inverse) {
for (int i = 0; i < N; i++)
x[i] = divComplexByReal(x[i], N);
}
}
void dft(Complex *x, Complex *c, int N) {
for (int k = 0; k < N; k++) {
c[k] = getComplex(0.0, 0.0);
for (int n = 0; n < N; n++) {
double theta = -2.0 * M_PI * k * n / N;
Complex w = cexptheta(theta);
c[k] = addComplex(c[k], timeComplex(x[n], w));
}
}
}
/* 振幅スペクトルの最大値を0dBとしてテキストファイルに出力する関数 */
void outputSpectrum(const char *fname, Complex *x, int N, double fs) {
double max_amp = 0.0;
double *amps = malloc((N / 2 + 1) * sizeof(double));
// 全データの中で最大振幅を探す
for (int i = 0; i <= N / 2; i++) {
amps[i] = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
if (amps[i] > max_amp)
max_amp = amps[i];
}
FILE *fp = fopen(fname, "w");
if (!fp) {
free(amps);
return;
}
for (int i = 0; i <= N / 2; i++) {
double f = (double)i * fs / N;
// 最大振幅を基準(X_b)としてdB値を計算
double db = (amps[i] > 0 && max_amp > 0) ? 20.0 * log10(amps[i] / max_amp) : -100.0;
fprintf(fp, "%f %f %f\n", f, amps[i], db);
}
fclose(fp);
free(amps);
}
/* 複素数配列の平均パワーを求める関数 */
double calcAmpPower(Complex *x, int N) {
double amp, power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i].r * x[i].r + x[i].i * x[i].i;
power += amp;
}
return power / N;
}
int main(void) {
int N = LENGTH;
short input[LENGTH];
Complex x_dft[LENGTH], x_fft[LENGTH], c[LENGTH];
FILE *fp;
double fs = 16000.0;
printf("Processing Kadai 1...\n");
fp = fopen("sample01.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open sample01.sw\n");
return 1;
}
FILE *out1 = fopen("kadai1.txt", "w");
short val;
for (int i = 0; i < 480; i++) {
if (fread(&val, sizeof(short), 1, fp) != 1)
break;
double time_ms = (double)i / fs * 1000.0;
double norm_val = (double)val / 32768.0;
fprintf(out1, "%f %f\n", time_ms, norm_val);
}
fclose(out1);
fclose(fp);
printf("Processing Kadai 2...\n");
fp = fopen("sample01.sw", "rb");
fread(input, sizeof(short), N, fp);
fclose(fp);
for (int i = 0; i < N; i++) {
x_dft[i] = getComplex(input[i], 0);
x_fft[i] = getComplex(input[i], 0);
}
LARGE_INTEGER start, end, freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
dft(x_dft, c, N);
QueryPerformanceCounter(&end);
printf("Kadai 2: DFT Elapsed Time: %f s\n", (double)(end.QuadPart - start.QuadPart) / freq.QuadPart);
QueryPerformanceCounter(&start);
fft(x_fft, N, 0);
QueryPerformanceCounter(&end);
printf("Kadai 2: FFT Elapsed Time: %f s\n", (double)(end.QuadPart - start.QuadPart) / freq.QuadPart);
outputSpectrum("kadai2_dft.txt", c, N, fs);
outputSpectrum("kadai2_fft.txt", x_fft, N, fs);
printf("Processing Kadai 3...\n");
Complex x_win[LENGTH];
for (int i = 0; i < N; i++)
x_win[i] = getComplex(input[i], 0);
applyWindow(x_win, N);
fft(x_win, N, 0);
outputSpectrum("kadai3_window.txt", x_win, N, fs);
printf("Processing Kadai 4...\n");
typedef struct {
double time_sec;
const char *vowel;
} SeekTarget;
// 各母音の音声の開始時刻(秒)
SeekTarget targets[] = {
{0.361, "a"}, {0.969, "i"}, {1.415, "u"}, {1.936, "e"}, {2.431, "o"}
};
fp = fopen("j22330.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open j22330.sw\n");
return 1;
}
for (int t = 0; t < 5; t++) {
// 開始時刻からファイル上のバイト位置を計算 (16kHz, 16bit=2byte)
long start_byte = (long)(targets[t].time_sec * fs * 2);
fseek(fp, start_byte, SEEK_SET);
if (fread(input, sizeof(short), N, fp) != (size_t)N)
continue;
Complex x_k4[LENGTH];
for (int i = 0; i < N; i++)
x_k4[i] = getComplex(input[i], 0);
applyWindow(x_k4, N);
fft(x_k4, N, 0);
char fname[256];
sprintf(fname, "kadai4_%s.txt", targets[t].vowel);
outputSpectrum(fname, x_k4, N, fs);
}
fclose(fp);
printf("Processing Kosatsu 1...\n");
fp = fopen("sample01.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open sample01.sw\n");
return 1;
}
fread(input, sizeof(short), N, fp);
fclose(fp);
Complex x_power[LENGTH];
for (int i = 0; i < N; i++)
x_power[i] = getComplex(input[i], 0);
double beforePower, afterPower;
beforePower = calcAmpPower(x_power, N);
applyWindow(x_power, N);
afterPower = calcAmpPower(x_power, N);
printf("Kosatsu 1: BEFORE : %16f\n", beforePower);
printf("Kosatsu 1: AFTER : %16f\n", afterPower);
printf("Kosatsu 1: DIFF : %16f\n", beforePower - afterPower);
printf("Kosatsu 1: RATIO : %16f\n", afterPower / beforePower);
printf("Processing Hatten Kadai 1...\n");
fp = fopen("j22330.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open j22330.sw\n");
return 1;
}
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
rewind(fp);
long total_samples = file_size / sizeof(short);
short *all_input = malloc(file_size);
if (!all_input) {
fprintf(stderr, "Memory allocation failed\n");
fclose(fp);
return 1;
}
fread(all_input, sizeof(short), total_samples, fp);
fclose(fp);
int shift = 160; // フレームをずらす間隔 (10ms)
double global_max = 0.0;
Complex x_hatten[LENGTH];
// 0dBの基準となる全体の最大振幅を探索
for (long i = 0; i <= total_samples - N; i += shift) {
for (int j = 0; j < N; j++) {
x_hatten[j] = getComplex(all_input[i + j], 0);
}
applyWindow(x_hatten, N);
fft(x_hatten, N, 0);
for (int j = 0; j <= N / 2; j++) {
double amp = sqrt(x_hatten[j].r * x_hatten[j].r + x_hatten[j].i * x_hatten[j].i);
if (amp > global_max) {
global_max = amp;
}
}
}
// 各フレームのFFTを実行し、最大振幅を基準としたdB値を出力
FILE *out_sp = fopen("spectrogram.txt", "w");
if (out_sp && global_max > 0) {
for (long i = 0; i <= total_samples - N; i += shift) {
double time_sec = (i + N / 2.0) / fs;
for (int j = 0; j < N; j++) {
x_hatten[j] = getComplex(all_input[i + j], 0);
}
applyWindow(x_hatten, N);
fft(x_hatten, N, 0);
for (int j = 0; j <= N / 2; j++) {
double f = (double)j * fs / N;
// 振幅の計算とdB変換 (-90dBで下限クリッピング)
double amp = sqrt(x_hatten[j].r * x_hatten[j].r + x_hatten[j].i * x_hatten[j].i);
double db = (amp > 0) ? 20.0 * log10(amp / global_max) : -100.0;
if (db < -90.0) db = -90.0;
fprintf(out_sp, "%f %f %f\n", time_sec, f, db);
}
fprintf(out_sp, "\n"); // gnuplotのpm3d(面グラフ)描画用に空行を挿入
}
fclose(out_sp);
}
free(all_input);
printf("All Kadai processed.\n");
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

@ -0,0 +1,480 @@
0.000000 0.629181
0.062500 0.557068
0.125000 0.078522
0.187500 0.078918
0.250000 0.000000
0.312500 0.101563
0.375000 0.564728
0.437500 0.642700
0.500000 0.000000
0.562500 -0.999939
0.625000 0.000000
0.687500 -0.249969
0.750000 0.015869
0.812500 0.000000
0.875000 -0.546875
0.937500 0.591400
1.000000 0.005463
1.062500 0.000000
1.125000 0.875275
1.187500 0.697510
1.250000 0.003510
1.312500 0.109375
1.375000 0.005981
1.437500 0.109375
1.500000 0.013794
1.562500 0.340485
1.625000 0.211365
1.687500 0.000000
1.750000 -0.467865
1.812500 0.533478
1.875000 0.658234
1.937500 -0.777588
2.000000 -0.266205
2.062500 0.878876
2.125000 -0.079468
2.187500 -0.057709
2.250000 -0.375458
2.312500 -0.469177
2.375000 0.282410
2.437500 -0.122070
2.500000 0.752441
2.562500 0.568512
2.625000 0.087677
2.687500 0.274078
2.750000 -0.266205
2.812500 -0.476563
2.875000 0.651886
2.937500 0.200195
3.000000 0.568665
3.062500 0.934692
3.125000 0.713196
3.187500 -0.468933
3.250000 0.592316
3.312500 0.217621
3.375000 0.382141
3.437500 0.119568
3.500000 -0.552826
3.562500 0.381927
3.625000 0.267303
3.687500 0.203766
3.750000 0.544220
3.812500 -0.838623
3.875000 -0.643036
3.937500 0.842499
4.000000 0.158020
4.062500 -0.693451
4.125000 -0.721619
4.187500 -0.411743
4.250000 0.600372
4.312500 -0.321747
4.375000 -0.133270
4.437500 -0.338684
4.500000 -0.218658
4.562500 -0.418396
4.625000 -0.338989
4.687500 0.658386
4.750000 0.824463
4.812500 0.642944
4.875000 0.691345
4.937500 -0.428345
5.000000 -0.875275
5.062500 -0.198334
5.125000 0.107269
5.187500 -0.584839
5.250000 -0.598511
5.312500 0.286591
5.375000 0.945160
5.437500 -0.578247
5.500000 -0.297028
5.562500 0.946259
5.625000 -0.797333
5.687500 -0.035431
5.750000 -0.594116
5.812500 0.486298
5.875000 -0.167145
5.937500 -0.149048
6.000000 0.002319
6.062500 -0.027344
6.125000 0.172668
6.187500 0.001862
6.250000 0.156250
6.312500 0.008850
6.375000 -0.999817
6.437500 0.015625
6.500000 0.000366
6.562500 0.031281
6.625000 0.000732
6.687500 0.062561
6.750000 0.001465
6.812500 0.125122
6.875000 0.002930
6.937500 0.250244
7.000000 0.005859
7.062500 0.500488
7.125000 0.011719
7.187500 -0.999023
7.250000 0.023438
7.312500 0.001953
7.375000 0.046906
7.437500 0.003906
7.500000 0.093811
7.562500 0.007813
7.625000 0.187622
7.687500 0.015625
7.750000 0.375244
7.812500 0.031250
7.875000 0.750488
7.937500 0.062500
8.000000 -0.499023
8.062500 0.125000
8.125000 -0.998047
8.187500 0.250031
8.250000 0.003906
8.312500 0.500092
8.375000 0.007813
8.437500 -0.999817
8.500000 0.015625
8.562500 0.000366
8.625000 0.031281
8.687500 0.000732
8.750000 0.062561
8.812500 0.001465
8.875000 0.125122
8.937500 0.002930
9.000000 0.250244
9.062500 0.005859
9.125000 0.500488
9.187500 0.011719
9.250000 -0.999023
9.312500 0.023438
9.375000 0.001953
9.437500 0.046906
9.500000 0.003906
9.562500 0.093811
9.625000 0.007813
9.687500 0.187622
9.750000 0.015625
9.812500 0.375244
9.875000 0.031250
9.937500 0.750488
10.000000 0.062500
10.062500 -0.499023
10.125000 0.125000
10.187500 -0.998047
10.250000 0.250031
10.312500 0.003906
10.375000 0.500092
10.437500 0.007813
10.500000 -0.999817
10.562500 0.015625
10.625000 0.000366
10.687500 0.031281
10.750000 0.000732
10.812500 0.062561
10.875000 0.001465
10.937500 0.125122
11.000000 0.002930
11.062500 0.250244
11.125000 0.005859
11.187500 0.500488
11.250000 0.011719
11.312500 -0.999023
11.375000 0.023438
11.437500 0.001953
11.500000 0.046906
11.562500 0.003906
11.625000 0.093811
11.687500 0.007813
11.750000 0.187622
11.812500 0.015625
11.875000 0.375244
11.937500 0.031250
12.000000 0.750488
12.062500 0.062500
12.125000 -0.499023
12.187500 0.125000
12.250000 -0.998047
12.312500 0.250031
12.375000 0.003906
12.437500 0.500092
12.500000 0.007813
12.562500 -0.999817
12.625000 0.015625
12.687500 0.000366
12.750000 0.031281
12.812500 0.000732
12.875000 0.062561
12.937500 0.001465
13.000000 0.125122
13.062500 0.002930
13.125000 0.250244
13.187500 0.005859
13.250000 0.500488
13.312500 0.011719
13.375000 -0.999023
13.437500 0.023438
13.500000 0.001953
13.562500 0.046906
13.625000 0.003906
13.687500 0.093811
13.750000 0.007813
13.812500 0.187622
13.875000 0.015625
13.937500 0.375244
14.000000 0.031250
14.062500 0.750488
14.125000 0.062500
14.187500 -0.499023
14.250000 0.125000
14.312500 -0.998047
14.375000 0.250031
14.437500 0.003906
14.500000 0.500092
14.562500 0.007813
14.625000 -0.999817
14.687500 0.015625
14.750000 0.000366
14.812500 0.031281
14.875000 0.000732
14.937500 0.062561
15.000000 0.001465
15.062500 0.125122
15.125000 0.002930
15.187500 0.250244
15.250000 0.005859
15.312500 0.500488
15.375000 0.011719
15.437500 -0.999023
15.500000 0.023438
15.562500 0.001953
15.625000 0.046906
15.687500 0.003906
15.750000 0.093811
15.812500 0.007813
15.875000 0.187622
15.937500 0.015625
16.000000 0.375244
16.062500 0.031250
16.125000 0.750488
16.187500 0.062500
16.250000 -0.499023
16.312500 0.125000
16.375000 -0.998047
16.437500 0.250031
16.500000 0.003906
16.562500 0.500092
16.625000 0.007813
16.687500 -0.999817
16.750000 0.015625
16.812500 0.000366
16.875000 0.031281
16.937500 0.000732
17.000000 0.062561
17.062500 0.001465
17.125000 0.125122
17.187500 0.002930
17.250000 0.250244
17.312500 0.005859
17.375000 0.500488
17.437500 0.011719
17.500000 -0.999023
17.562500 0.023438
17.625000 0.001953
17.687500 0.046906
17.750000 0.003906
17.812500 0.093811
17.875000 0.007813
17.937500 0.187622
18.000000 0.015625
18.062500 0.375244
18.125000 0.031250
18.187500 0.750488
18.250000 0.062500
18.312500 -0.499023
18.375000 0.125000
18.437500 -0.998047
18.500000 0.250031
18.562500 0.003906
18.625000 0.500092
18.687500 0.007813
18.750000 -0.999817
18.812500 0.015625
18.875000 0.000366
18.937500 0.031281
19.000000 0.000732
19.062500 0.062561
19.125000 0.001465
19.187500 0.125122
19.250000 0.002930
19.312500 0.250244
19.375000 0.005859
19.437500 0.500488
19.500000 0.011719
19.562500 -0.999023
19.625000 0.023438
19.687500 0.001953
19.750000 0.046906
19.812500 0.003906
19.875000 0.093811
19.937500 0.007813
20.000000 0.187622
20.062500 0.015625
20.125000 0.375244
20.187500 0.031250
20.250000 0.750488
20.312500 0.062500
20.375000 -0.499023
20.437500 0.125000
20.500000 -0.998047
20.562500 0.250031
20.625000 0.003906
20.687500 0.500092
20.750000 0.007813
20.812500 -0.999817
20.875000 0.015625
20.937500 0.000366
21.000000 0.031281
21.062500 0.000732
21.125000 0.062561
21.187500 0.001465
21.250000 0.125122
21.312500 0.002930
21.375000 0.250244
21.437500 0.005859
21.500000 0.500488
21.562500 0.011719
21.625000 -0.999023
21.687500 0.023438
21.750000 0.001953
21.812500 0.046906
21.875000 0.003906
21.937500 0.093811
22.000000 0.007813
22.062500 0.187622
22.125000 0.015625
22.187500 0.375244
22.250000 0.031250
22.312500 0.750488
22.375000 0.062500
22.437500 -0.499023
22.500000 0.125000
22.562500 -0.998047
22.625000 0.250031
22.687500 0.003906
22.750000 0.500092
22.812500 0.007813
22.875000 -0.999817
22.937500 0.015625
23.000000 0.000366
23.062500 0.031281
23.125000 0.000732
23.187500 0.062561
23.250000 0.001465
23.312500 0.187622
23.375000 0.011597
23.437500 -0.594788
23.500000 0.620331
23.562500 0.886261
23.625000 -0.090302
23.687500 0.000610
23.750000 0.311035
23.812500 0.347748
23.875000 -0.033203
23.937500 -0.125275
24.000000 -0.575226
24.062500 0.698608
24.125000 0.163696
24.187500 -0.375000
24.250000 -0.973907
24.312500 -0.498840
24.375000 -0.387482
24.437500 -0.549927
24.500000 -0.007843
24.562500 -0.187653
24.625000 -0.767151
24.687500 -0.360504
24.750000 0.139191
24.812500 0.087799
24.875000 -0.093750
24.937500 -0.669281
25.000000 -0.596100
25.062500 0.954681
25.125000 0.933777
25.187500 -0.797699
25.250000 -0.762482
25.312500 -0.606659
25.375000 -0.426636
25.437500 -0.328796
25.500000 -0.908844
25.562500 -0.917664
25.625000 0.831360
25.687500 0.612610
25.750000 0.457916
25.812500 0.477203
25.875000 0.000519
25.937500 -0.503052
26.000000 0.900421
26.062500 -0.031128
26.125000 -0.062561
26.187500 -0.001984
26.250000 -0.234863
26.312500 0.935638
26.375000 0.889526
26.437500 -0.931427
26.500000 0.273956
26.562500 0.809631
26.625000 -0.999969
26.687500 0.208923
26.750000 0.384399
26.812500 0.493011
26.875000 0.972595
26.937500 0.069946
27.000000 -0.875000
27.062500 -0.975006
27.125000 0.069519
27.187500 0.000732
27.250000 0.144714
27.312500 0.046906
27.375000 0.003906
27.437500 -0.199127
27.500000 -0.186371
27.562500 -0.867584
27.625000 -0.708679
27.687500 0.559631
27.750000 0.750000
27.812500 -0.433350
27.875000 0.812286
27.937500 -0.940735
28.000000 -0.996521
28.062500 0.988861
28.125000 0.748779
28.187500 0.683685
28.250000 0.415344
28.312500 0.487549
28.375000 -0.758270
28.437500 -0.077911
28.500000 0.424011
28.562500 -0.722809
28.625000 0.730804
28.687500 -0.394012
28.750000 -0.430725
28.812500 0.248718
28.875000 0.908417
28.937500 -0.981506
29.000000 -0.999817
29.062500 0.015625
29.125000 0.000366
29.187500 -0.953094
29.250000 0.343323
29.312500 0.734741
29.375000 -0.427765
29.437500 0.870300
29.500000 -0.598511
29.562500 -0.607697
29.625000 0.217560
29.687500 -0.153412
29.750000 0.847961
29.812500 0.554382
29.875000 -0.010071
29.937500 0.217529

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

@ -0,0 +1,257 @@
0.000000 184869.000000 -16.614191
31.250000 294957.545079 -12.556282
62.500000 375245.195319 -10.465170
93.750000 217888.692261 -15.186779
125.000000 96054.404210 -22.301127
156.250000 253824.093459 -13.860816
187.500000 84274.709879 -23.437527
218.750000 257673.357802 -13.730082
250.000000 373992.560449 -10.494213
281.250000 245787.305639 -14.140284
312.500000 251433.761508 -13.943001
343.750000 243101.133320 -14.235733
375.000000 64716.949220 -25.731112
406.250000 197969.073347 -16.019525
437.500000 407436.203160 -9.750280
468.750000 524857.237365 -7.550649
500.000000 359556.483550 -10.836130
531.250000 208894.903015 -15.552916
562.500000 323603.553607 -11.751207
593.750000 464614.838168 -8.609611
625.000000 330392.815536 -11.570861
656.250000 111823.712364 -20.980794
687.500000 288928.948255 -12.735651
718.750000 149545.585132 -18.456001
750.000000 98326.852370 -22.098030
781.250000 182367.703014 -16.732514
812.500000 298887.678904 -12.441312
843.750000 292973.951156 -12.614892
875.000000 58243.324680 -26.646549
906.250000 312707.425307 -12.048709
937.500000 668862.953889 -5.444730
968.750000 396640.182137 -9.983538
1000.000000 677362.631676 -5.335048
1031.250000 138758.395511 -19.106287
1062.500000 281410.629042 -12.964663
1093.750000 352121.336050 -11.017626
1125.000000 243490.479737 -14.221833
1156.250000 100763.525619 -21.885405
1187.500000 168338.575601 -17.427800
1218.750000 140237.676152 -19.014178
1250.000000 24197.249079 -34.276153
1281.250000 179280.331915 -16.880820
1312.500000 152744.806334 -18.272143
1343.750000 183596.270076 -16.674195
1375.000000 489778.104900 -8.151485
1406.250000 353916.070326 -10.973467
1437.500000 468950.320401 -8.528936
1468.750000 250474.011892 -13.976219
1500.000000 92400.706803 -22.637967
1531.250000 73571.624509 -24.617266
1562.500000 12939.356399 -39.713219
1593.750000 310771.650009 -12.102645
1625.000000 419635.803546 -9.494022
1656.250000 131638.412049 -19.563820
1687.500000 316694.073552 -11.938674
1718.750000 459028.311295 -8.714683
1750.000000 213932.024259 -15.345956
1781.250000 243062.342754 -14.237119
1812.500000 261345.170605 -13.607183
1843.750000 81122.791918 -23.768615
1875.000000 395365.183511 -10.011504
1906.250000 498026.433835 -8.006425
1937.500000 328891.120418 -11.610430
1968.750000 571066.949712 -6.817732
2000.000000 320491.866436 -11.835132
2031.250000 250373.630643 -13.979701
2062.500000 266399.514442 -13.440804
2093.750000 349076.897618 -11.093050
2125.000000 347469.147183 -11.133148
2156.250000 95054.470533 -22.392022
2187.500000 321772.951218 -11.800482
2218.750000 446841.594935 -8.948401
2250.000000 117128.146169 -20.578247
2281.250000 346789.953214 -11.150142
2312.500000 456237.101936 -8.767660
2343.750000 418856.098121 -9.510176
2375.000000 248433.826009 -14.047258
2406.250000 1069762.098835 -1.365728
2437.500000 930474.944549 -2.577379
2468.750000 144205.981812 -18.771807
2500.000000 190207.043918 -16.366941
2531.250000 499236.591322 -7.985344
2562.500000 435899.982049 -9.163735
2593.750000 200524.610126 -15.908119
2625.000000 136101.536160 -19.274212
2656.250000 286639.476425 -12.804752
2687.500000 360663.245238 -10.809435
2718.750000 276442.261041 -13.119384
2750.000000 255022.987198 -13.819886
2781.250000 318992.331370 -11.875868
2812.500000 351856.733872 -11.024155
2843.750000 293153.502275 -12.609571
2875.000000 65758.522940 -25.592431
2906.250000 528770.399598 -7.486130
2937.500000 365014.671168 -10.705266
2968.750000 178159.968893 -16.935270
3000.000000 377298.209603 -10.417778
3031.250000 436630.037157 -9.149200
3062.500000 246967.693507 -14.098670
3093.750000 33783.912250 -31.377274
3125.000000 92469.491055 -22.631503
3156.250000 195222.784990 -16.140862
3187.500000 440783.460623 -9.066967
3218.750000 566739.142362 -6.883808
3250.000000 300660.107607 -12.389956
3281.250000 269575.039010 -13.337879
3312.500000 539626.121842 -7.309613
3343.750000 277252.710747 -13.093956
3375.000000 622105.229889 -6.074195
3406.250000 850422.222687 -3.358780
3437.500000 408008.080000 -9.738097
3468.750000 56730.596024 -26.875126
3500.000000 299141.706284 -12.433933
3531.250000 378201.292750 -10.397012
3562.500000 116529.529257 -20.622753
3593.750000 283575.250624 -12.898106
3625.000000 371427.260927 -10.553997
3656.250000 217131.733969 -15.217006
3687.500000 319905.019937 -11.851051
3718.750000 213089.960491 -15.380213
3750.000000 161055.942060 -17.811937
3781.250000 272401.780823 -13.247274
3812.500000 154764.640740 -18.158038
3843.750000 194557.796197 -16.170500
3875.000000 723871.483537 -4.758243
3906.250000 604307.706510 -6.326310
3937.500000 327589.591239 -11.644871
3968.750000 216937.931915 -15.224763
4000.000000 348495.862198 -11.107520
4031.250000 87798.051120 -23.081775
4062.500000 244501.954226 -14.185826
4093.750000 301086.900608 -12.377635
4125.000000 168776.220013 -17.405247
4156.250000 130785.299318 -19.620294
4187.500000 287287.998752 -12.785123
4218.750000 463255.903593 -8.635053
4250.000000 449341.721357 -8.899938
4281.250000 146688.521468 -18.623550
4312.500000 294015.022451 -12.584082
4343.750000 400272.551326 -9.904356
4375.000000 529602.513112 -7.472472
4406.250000 81941.272010 -23.681418
4437.500000 269804.057805 -13.330503
4468.750000 260306.176679 -13.641783
4500.000000 301246.328927 -12.373037
4531.250000 313906.558293 -12.015465
4562.500000 200607.768990 -15.904518
4593.750000 205342.677049 -15.701888
4625.000000 332631.885962 -11.512195
4656.250000 259537.902142 -13.667457
4687.500000 128868.862244 -19.748513
4718.750000 148218.818574 -18.533406
4750.000000 129924.926067 -19.677623
4781.250000 184397.615706 -16.636366
4812.500000 503199.441939 -7.916669
4843.750000 568729.845217 -6.853352
4875.000000 494259.991882 -8.072363
4906.250000 149337.228377 -18.468111
4937.500000 230897.730628 -14.683079
4968.750000 261672.020412 -13.596327
5000.000000 469208.036387 -8.524164
5031.250000 399754.109262 -9.915614
5062.500000 533020.694710 -7.416591
5093.750000 511319.809275 -7.777620
5125.000000 266153.040730 -13.448844
5156.250000 233904.831804 -14.570689
5187.500000 449578.177652 -8.895368
5218.750000 478294.281773 -8.357569
5250.000000 313540.291710 -12.025605
5281.250000 506374.166403 -7.862042
5312.500000 443343.263630 -9.016670
5343.750000 658980.263118 -5.574024
5375.000000 86775.934997 -23.183486
5406.250000 124192.253071 -20.069582
5437.500000 149790.566335 -18.441783
5468.750000 135411.445683 -19.318365
5500.000000 145063.850513 -18.720288
5531.250000 229251.881733 -14.745214
5562.500000 164208.727539 -17.643548
5593.750000 291538.916739 -12.657542
5625.000000 454996.806223 -8.791306
5656.250000 194501.266765 -16.173024
5687.500000 413911.027543 -9.613333
5718.750000 657545.895450 -5.592951
5750.000000 437591.709185 -9.130091
5781.250000 149417.994715 -18.463414
5812.500000 58151.660843 -26.660230
5843.750000 335090.450414 -11.448231
5875.000000 314267.886509 -12.005472
5906.250000 251373.847789 -13.945071
5937.500000 47706.137699 -28.379987
5968.750000 157194.371829 -18.022733
6000.000000 137158.145577 -19.207040
6031.250000 189364.584145 -16.405497
6062.500000 320838.184970 -11.825751
6093.750000 245290.034702 -14.157874
6125.000000 121067.724976 -20.290905
6156.250000 171303.956215 -17.276125
6187.500000 250473.316886 -13.976243
6218.750000 222387.721645 -15.009256
6250.000000 59417.442245 -26.473193
6281.250000 754961.248856 -4.392979
6312.500000 1251911.485419 0.000000
6343.750000 387683.041504 -10.181936
6375.000000 334932.831667 -11.452318
6406.250000 55271.173875 -27.101499
6437.500000 219909.022949 -15.106611
6468.750000 415956.453911 -9.570515
6500.000000 495462.725546 -8.051253
6531.250000 386089.382031 -10.217715
6562.500000 242600.644850 -14.253633
6593.750000 150819.875959 -18.382301
6625.000000 153512.723927 -18.228585
6656.250000 104325.163528 -21.583691
6687.500000 67323.122533 -25.388187
6718.750000 246240.993469 -14.124265
6750.000000 324936.140135 -11.715512
6781.250000 465255.440400 -8.597643
6812.500000 574114.917535 -6.771496
6843.750000 135430.430007 -19.317147
6875.000000 244386.948136 -14.189912
6906.250000 336217.641510 -11.419063
6937.500000 214120.907422 -15.338291
6968.750000 87506.842260 -23.110632
7000.000000 92641.446106 -22.615366
7031.250000 329809.913553 -11.586198
7062.500000 404892.173692 -9.804685
7093.750000 171914.742283 -17.245210
7125.000000 51326.147602 -27.744699
7156.250000 114073.534632 -20.807775
7187.500000 418664.023082 -9.514160
7218.750000 317086.855794 -11.927908
7250.000000 551884.732208 -7.114505
7281.250000 660304.552291 -5.556587
7312.500000 373513.766784 -10.505340
7343.750000 214707.271675 -15.314537
7375.000000 209212.363290 -15.539726
7406.250000 127290.373625 -19.855561
7437.500000 74257.310962 -24.536688
7468.750000 178901.342278 -16.899200
7500.000000 222105.769770 -15.020276
7531.250000 115935.861338 -20.667117
7562.500000 207815.856279 -15.597899
7593.750000 89043.841733 -22.959395
7625.000000 151226.020033 -18.358942
7656.250000 167705.711687 -17.460515
7687.500000 146177.518090 -18.653861
7718.750000 222918.234419 -14.988561
7750.000000 202135.077583 -15.838639
7781.250000 136034.851142 -19.278469
7812.500000 109004.335791 -21.202597
7843.750000 154953.590710 -18.147440
7875.000000 228887.937959 -14.759014
7906.250000 81092.222672 -23.771888
7937.500000 105352.608883 -21.498567
7968.750000 126829.232855 -19.887085
8000.000000 79233.000000 -23.973350

@ -0,0 +1,257 @@
0.000000 184869.000000 -16.614191
31.250000 294957.545079 -12.556282
62.500000 375245.195319 -10.465170
93.750000 217888.692261 -15.186779
125.000000 96054.404210 -22.301127
156.250000 253824.093459 -13.860816
187.500000 84274.709879 -23.437527
218.750000 257673.357802 -13.730082
250.000000 373992.560449 -10.494213
281.250000 245787.305639 -14.140284
312.500000 251433.761508 -13.943001
343.750000 243101.133320 -14.235733
375.000000 64716.949220 -25.731112
406.250000 197969.073347 -16.019525
437.500000 407436.203160 -9.750280
468.750000 524857.237365 -7.550649
500.000000 359556.483550 -10.836130
531.250000 208894.903015 -15.552916
562.500000 323603.553607 -11.751207
593.750000 464614.838168 -8.609611
625.000000 330392.815536 -11.570861
656.250000 111823.712364 -20.980794
687.500000 288928.948255 -12.735651
718.750000 149545.585132 -18.456001
750.000000 98326.852370 -22.098030
781.250000 182367.703014 -16.732514
812.500000 298887.678904 -12.441312
843.750000 292973.951156 -12.614892
875.000000 58243.324680 -26.646549
906.250000 312707.425307 -12.048709
937.500000 668862.953889 -5.444730
968.750000 396640.182137 -9.983538
1000.000000 677362.631676 -5.335048
1031.250000 138758.395511 -19.106287
1062.500000 281410.629042 -12.964663
1093.750000 352121.336050 -11.017626
1125.000000 243490.479737 -14.221833
1156.250000 100763.525619 -21.885405
1187.500000 168338.575601 -17.427800
1218.750000 140237.676152 -19.014178
1250.000000 24197.249079 -34.276153
1281.250000 179280.331915 -16.880820
1312.500000 152744.806334 -18.272143
1343.750000 183596.270076 -16.674195
1375.000000 489778.104900 -8.151485
1406.250000 353916.070326 -10.973467
1437.500000 468950.320401 -8.528936
1468.750000 250474.011892 -13.976219
1500.000000 92400.706803 -22.637967
1531.250000 73571.624509 -24.617266
1562.500000 12939.356399 -39.713219
1593.750000 310771.650009 -12.102645
1625.000000 419635.803546 -9.494022
1656.250000 131638.412049 -19.563820
1687.500000 316694.073552 -11.938674
1718.750000 459028.311295 -8.714683
1750.000000 213932.024259 -15.345956
1781.250000 243062.342754 -14.237119
1812.500000 261345.170605 -13.607183
1843.750000 81122.791918 -23.768615
1875.000000 395365.183511 -10.011504
1906.250000 498026.433835 -8.006425
1937.500000 328891.120418 -11.610430
1968.750000 571066.949712 -6.817732
2000.000000 320491.866436 -11.835132
2031.250000 250373.630643 -13.979701
2062.500000 266399.514442 -13.440804
2093.750000 349076.897618 -11.093050
2125.000000 347469.147183 -11.133148
2156.250000 95054.470533 -22.392022
2187.500000 321772.951218 -11.800482
2218.750000 446841.594935 -8.948401
2250.000000 117128.146169 -20.578247
2281.250000 346789.953214 -11.150142
2312.500000 456237.101936 -8.767660
2343.750000 418856.098121 -9.510176
2375.000000 248433.826009 -14.047258
2406.250000 1069762.098835 -1.365728
2437.500000 930474.944549 -2.577379
2468.750000 144205.981812 -18.771807
2500.000000 190207.043918 -16.366941
2531.250000 499236.591322 -7.985344
2562.500000 435899.982049 -9.163735
2593.750000 200524.610126 -15.908119
2625.000000 136101.536160 -19.274212
2656.250000 286639.476425 -12.804752
2687.500000 360663.245238 -10.809435
2718.750000 276442.261041 -13.119384
2750.000000 255022.987198 -13.819886
2781.250000 318992.331370 -11.875868
2812.500000 351856.733872 -11.024155
2843.750000 293153.502275 -12.609571
2875.000000 65758.522940 -25.592431
2906.250000 528770.399598 -7.486130
2937.500000 365014.671168 -10.705266
2968.750000 178159.968893 -16.935270
3000.000000 377298.209603 -10.417778
3031.250000 436630.037157 -9.149200
3062.500000 246967.693507 -14.098670
3093.750000 33783.912250 -31.377274
3125.000000 92469.491055 -22.631503
3156.250000 195222.784990 -16.140862
3187.500000 440783.460623 -9.066967
3218.750000 566739.142362 -6.883808
3250.000000 300660.107607 -12.389956
3281.250000 269575.039010 -13.337879
3312.500000 539626.121842 -7.309613
3343.750000 277252.710747 -13.093956
3375.000000 622105.229889 -6.074195
3406.250000 850422.222687 -3.358780
3437.500000 408008.080000 -9.738097
3468.750000 56730.596024 -26.875126
3500.000000 299141.706284 -12.433933
3531.250000 378201.292750 -10.397012
3562.500000 116529.529257 -20.622753
3593.750000 283575.250624 -12.898106
3625.000000 371427.260927 -10.553997
3656.250000 217131.733969 -15.217006
3687.500000 319905.019937 -11.851051
3718.750000 213089.960491 -15.380213
3750.000000 161055.942060 -17.811937
3781.250000 272401.780823 -13.247274
3812.500000 154764.640740 -18.158038
3843.750000 194557.796197 -16.170500
3875.000000 723871.483537 -4.758243
3906.250000 604307.706510 -6.326310
3937.500000 327589.591239 -11.644871
3968.750000 216937.931915 -15.224763
4000.000000 348495.862198 -11.107520
4031.250000 87798.051120 -23.081775
4062.500000 244501.954226 -14.185826
4093.750000 301086.900608 -12.377635
4125.000000 168776.220013 -17.405247
4156.250000 130785.299318 -19.620294
4187.500000 287287.998752 -12.785123
4218.750000 463255.903593 -8.635053
4250.000000 449341.721357 -8.899938
4281.250000 146688.521468 -18.623550
4312.500000 294015.022451 -12.584082
4343.750000 400272.551326 -9.904356
4375.000000 529602.513112 -7.472472
4406.250000 81941.272010 -23.681418
4437.500000 269804.057805 -13.330503
4468.750000 260306.176679 -13.641783
4500.000000 301246.328927 -12.373037
4531.250000 313906.558293 -12.015465
4562.500000 200607.768990 -15.904518
4593.750000 205342.677049 -15.701888
4625.000000 332631.885962 -11.512195
4656.250000 259537.902142 -13.667457
4687.500000 128868.862244 -19.748513
4718.750000 148218.818574 -18.533406
4750.000000 129924.926067 -19.677623
4781.250000 184397.615706 -16.636366
4812.500000 503199.441939 -7.916669
4843.750000 568729.845217 -6.853352
4875.000000 494259.991882 -8.072363
4906.250000 149337.228377 -18.468111
4937.500000 230897.730628 -14.683079
4968.750000 261672.020412 -13.596327
5000.000000 469208.036387 -8.524164
5031.250000 399754.109262 -9.915614
5062.500000 533020.694710 -7.416591
5093.750000 511319.809275 -7.777620
5125.000000 266153.040730 -13.448844
5156.250000 233904.831804 -14.570689
5187.500000 449578.177652 -8.895368
5218.750000 478294.281773 -8.357569
5250.000000 313540.291710 -12.025605
5281.250000 506374.166403 -7.862042
5312.500000 443343.263630 -9.016670
5343.750000 658980.263118 -5.574024
5375.000000 86775.934997 -23.183486
5406.250000 124192.253071 -20.069582
5437.500000 149790.566335 -18.441783
5468.750000 135411.445683 -19.318365
5500.000000 145063.850513 -18.720288
5531.250000 229251.881733 -14.745214
5562.500000 164208.727539 -17.643548
5593.750000 291538.916739 -12.657542
5625.000000 454996.806223 -8.791306
5656.250000 194501.266765 -16.173024
5687.500000 413911.027543 -9.613333
5718.750000 657545.895450 -5.592951
5750.000000 437591.709185 -9.130091
5781.250000 149417.994715 -18.463414
5812.500000 58151.660843 -26.660230
5843.750000 335090.450415 -11.448231
5875.000000 314267.886509 -12.005472
5906.250000 251373.847789 -13.945071
5937.500000 47706.137699 -28.379987
5968.750000 157194.371829 -18.022733
6000.000000 137158.145577 -19.207040
6031.250000 189364.584145 -16.405497
6062.500000 320838.184970 -11.825751
6093.750000 245290.034702 -14.157874
6125.000000 121067.724976 -20.290905
6156.250000 171303.956215 -17.276125
6187.500000 250473.316886 -13.976243
6218.750000 222387.721645 -15.009256
6250.000000 59417.442245 -26.473193
6281.250000 754961.248856 -4.392979
6312.500000 1251911.485419 0.000000
6343.750000 387683.041504 -10.181936
6375.000000 334932.831667 -11.452318
6406.250000 55271.173875 -27.101499
6437.500000 219909.022949 -15.106611
6468.750000 415956.453911 -9.570515
6500.000000 495462.725546 -8.051253
6531.250000 386089.382031 -10.217715
6562.500000 242600.644850 -14.253633
6593.750000 150819.875959 -18.382301
6625.000000 153512.723927 -18.228585
6656.250000 104325.163528 -21.583691
6687.500000 67323.122533 -25.388187
6718.750000 246240.993469 -14.124265
6750.000000 324936.140135 -11.715512
6781.250000 465255.440400 -8.597643
6812.500000 574114.917535 -6.771496
6843.750000 135430.430007 -19.317147
6875.000000 244386.948136 -14.189912
6906.250000 336217.641510 -11.419063
6937.500000 214120.907422 -15.338291
6968.750000 87506.842260 -23.110632
7000.000000 92641.446106 -22.615366
7031.250000 329809.913553 -11.586198
7062.500000 404892.173692 -9.804685
7093.750000 171914.742283 -17.245210
7125.000000 51326.147602 -27.744699
7156.250000 114073.534632 -20.807775
7187.500000 418664.023082 -9.514160
7218.750000 317086.855794 -11.927908
7250.000000 551884.732208 -7.114505
7281.250000 660304.552291 -5.556587
7312.500000 373513.766784 -10.505340
7343.750000 214707.271675 -15.314537
7375.000000 209212.363290 -15.539726
7406.250000 127290.373625 -19.855561
7437.500000 74257.310962 -24.536688
7468.750000 178901.342278 -16.899200
7500.000000 222105.769770 -15.020276
7531.250000 115935.861338 -20.667117
7562.500000 207815.856279 -15.597899
7593.750000 89043.841733 -22.959395
7625.000000 151226.020033 -18.358942
7656.250000 167705.711687 -17.460515
7687.500000 146177.518090 -18.653861
7718.750000 222918.234419 -14.988561
7750.000000 202135.077583 -15.838639
7781.250000 136034.851142 -19.278469
7812.500000 109004.335791 -21.202597
7843.750000 154953.590710 -18.147440
7875.000000 228887.937959 -14.759014
7906.250000 81092.222672 -23.771888
7937.500000 105352.608883 -21.498567
7968.750000 126829.232855 -19.887085
8000.000000 79233.000000 -23.973350

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@ -0,0 +1,257 @@
0.000000 46641.156978 -25.510700
31.250000 37511.467194 -27.402806
62.500000 62654.600973 -22.947027
93.750000 53098.321814 -24.384471
125.000000 48765.143716 -25.123896
156.250000 82277.064365 -20.580511
187.500000 49853.212548 -24.932224
218.750000 76918.150629 -21.165510
250.000000 96311.043099 -19.212565
281.250000 72146.823225 -21.721742
312.500000 90857.724845 -19.718849
343.750000 84488.871404 -20.350096
375.000000 79408.064830 -20.888794
406.250000 66237.763662 -22.463973
437.500000 36150.184987 -27.723876
468.750000 234516.822105 -11.482607
500.000000 243323.470675 -11.162407
531.250000 79285.301485 -20.902233
562.500000 9424.595409 -39.400832
593.750000 76964.840300 -21.160239
625.000000 70848.456098 -21.879479
656.250000 65603.490118 -22.547548
687.500000 96128.864503 -19.229010
718.750000 49940.359620 -24.917053
750.000000 80897.060405 -20.727432
781.250000 73683.062857 -21.538733
812.500000 86433.299676 -20.152465
843.750000 103141.404090 -18.617426
875.000000 115777.277100 -17.613620
906.250000 138943.931192 -16.029295
937.500000 347929.478414 -8.056262
968.750000 453021.598933 -5.763708
1000.000000 401873.667045 -6.804296
1031.250000 115475.521300 -17.636288
1062.500000 114034.857272 -17.745334
1093.750000 77509.718568 -21.098963
1125.000000 72699.166425 -21.655498
1156.250000 47589.940824 -25.335783
1187.500000 50667.524401 -24.791493
1218.750000 34319.323353 -28.175312
1250.000000 4644.376742 -45.547538
1281.250000 47135.068944 -25.419204
1312.500000 70427.059204 -21.931296
1343.750000 11275.856384 -37.843096
1375.000000 110138.707616 -18.047287
1406.250000 157444.492522 -14.943537
1437.500000 363601.912045 -7.673563
1468.750000 264627.383969 -10.433391
1500.000000 123378.328308 -17.061309
1531.250000 58013.834745 -23.615455
1562.500000 58181.758728 -23.590350
1593.750000 50310.055886 -24.852991
1625.000000 101572.172794 -18.750592
1656.250000 37271.805985 -27.458478
1687.500000 72541.767998 -21.674324
1718.750000 102069.488762 -18.708168
1750.000000 23946.077276 -31.301399
1781.250000 83545.339979 -20.447642
1812.500000 89072.164684 -19.891247
1843.750000 63447.824363 -22.837752
1875.000000 124337.005337 -16.994079
1906.250000 146212.479978 -15.586398
1937.500000 207852.682908 -12.530974
1968.750000 280815.405845 -9.917668
2000.000000 75137.026011 -21.369007
2031.250000 63194.416580 -22.872512
2062.500000 20229.063725 -32.766571
2093.750000 38200.998624 -27.244592
2125.000000 76168.971551 -21.250525
2156.250000 74714.970306 -21.417934
2187.500000 88652.544249 -19.932263
2218.750000 126612.098456 -16.836583
2250.000000 50109.432215 -24.887697
2281.250000 88205.276032 -19.976195
2312.500000 66268.487101 -22.459946
2343.750000 88138.240295 -19.982799
2375.000000 252681.703504 -10.834611
2406.250000 793421.107466 -0.896012
2437.500000 742786.039720 -1.468812
2468.750000 307240.399498 -9.136520
2500.000000 16353.250648 -34.614005
2531.250000 95321.630748 -19.302257
2562.500000 45215.194092 -25.780399
2593.750000 32699.249456 -28.595331
2625.000000 35330.540543 -27.923081
2656.250000 24384.695875 -31.143740
2687.500000 49844.444157 -24.933751
2718.750000 23429.929913 -31.490667
2750.000000 23097.378326 -31.614833
2781.250000 31232.162858 -28.994045
2812.500000 38358.323848 -27.208894
2843.750000 50468.380771 -24.825699
2875.000000 152813.868808 -15.202831
2906.250000 345445.949089 -8.118485
2937.500000 273798.201420 -10.137475
2968.750000 40249.181211 -26.790946
3000.000000 84684.880187 -20.329969
3031.250000 82187.063771 -20.590017
3062.500000 52899.505125 -24.417054
3093.750000 60924.404175 -23.190261
3125.000000 66964.421290 -22.369204
3156.250000 76010.278968 -21.268640
3187.500000 82733.134787 -20.532497
3218.750000 129268.496409 -16.656233
3250.000000 106653.292093 -18.326601
3281.250000 94813.970750 -19.348640
3312.500000 152117.297007 -15.242515
3343.750000 131290.291911 -16.521434
3375.000000 513260.663701 -4.679327
3406.250000 503544.754483 -4.845325
3437.500000 165851.193550 -14.491715
3468.750000 7104.107430 -41.855896
3500.000000 70709.153441 -21.896574
3531.250000 90048.139890 -19.796592
3562.500000 33464.005057 -28.394528
3593.750000 71804.146811 -21.763096
3625.000000 86839.054349 -20.111785
3656.250000 8278.985799 -40.526544
3687.500000 80822.983457 -20.735389
3718.750000 47901.284344 -25.279143
3750.000000 56656.774513 -23.821050
3781.250000 79558.163302 -20.872392
3812.500000 17425.855924 -34.062204
3843.750000 253269.650353 -10.814424
3875.000000 554146.237729 -4.013599
3906.250000 396797.228499 -6.914714
3937.500000 40819.841167 -26.668660
3968.750000 73008.611948 -21.618605
4000.000000 110346.266618 -18.030934
4031.250000 31512.004197 -28.916566
4062.500000 68314.982356 -22.195767
4093.750000 47293.184769 -25.390115
4125.000000 26292.016086 -30.489609
4156.250000 46150.869613 -25.602489
4187.500000 18085.430946 -33.739509
4218.750000 49050.484831 -25.073221
4250.000000 74632.075920 -21.427576
4281.250000 28082.544757 -29.917357
4312.500000 85509.660850 -20.245783
4343.750000 69889.180349 -21.997888
4375.000000 198209.983089 -12.943576
4406.250000 101335.613416 -18.770845
4437.500000 80263.127013 -20.795765
4468.750000 35486.161176 -27.884906
4500.000000 46963.221133 -25.450929
4531.250000 58606.467016 -23.527176
4562.500000 40166.572083 -26.808791
4593.750000 30490.222489 -29.202875
4625.000000 59596.535087 -23.381666
4656.250000 23631.104051 -31.416406
4687.500000 26245.933598 -30.504846
4718.750000 29545.414113 -29.476285
4750.000000 58378.497097 -23.561028
4781.250000 16744.088612 -34.408856
4812.500000 322642.987002 -8.711642
4843.750000 509721.427648 -4.739429
4875.000000 421463.912778 -6.390879
4906.250000 138954.899663 -16.028609
4937.500000 100306.853240 -18.859475
4968.750000 69083.986504 -22.098539
5000.000000 135869.130106 -16.223671
5031.250000 80995.285819 -20.716892
5062.500000 115917.231996 -17.603127
5093.750000 87099.244104 -20.085799
5125.000000 18378.924696 -33.599685
5156.250000 24980.813373 -30.933955
5187.500000 69266.906024 -22.075571
5218.750000 116324.023671 -17.572698
5250.000000 74954.359172 -21.390149
5281.250000 128715.430792 -16.693474
5312.500000 188969.556456 -13.358250
5343.750000 356244.096170 -7.851133
5375.000000 147608.852998 -15.503839
5406.250000 50970.702692 -24.739674
5437.500000 33374.291232 -28.417846
5468.750000 27023.477839 -30.251262
5500.000000 22817.410587 -31.720759
5531.250000 65922.481919 -22.505416
5562.500000 74880.260147 -21.398740
5593.750000 61945.179593 -23.045936
5625.000000 122752.212665 -17.105500
5656.250000 86100.604072 -20.185963
5687.500000 96986.388411 -19.151871
5718.750000 131276.139661 -16.522371
5750.000000 73447.113194 -21.566592
5781.250000 117083.741277 -17.516155
5812.500000 62184.574642 -23.012433
5843.750000 84351.349434 -20.364246
5875.000000 21675.077428 -32.166873
5906.250000 38348.579097 -27.211101
5937.500000 13129.385433 -36.521199
5968.750000 56851.737450 -23.791212
6000.000000 47310.448047 -25.386945
6031.250000 24286.890353 -31.178648
6062.500000 53404.667670 -24.334502
6093.750000 18136.187083 -33.715167
6125.000000 18107.639471 -33.728850
6156.250000 26418.607952 -30.447888
6187.500000 59869.710737 -23.341943
6218.750000 74693.662865 -21.420412
6250.000000 210164.034275 -12.434919
6281.250000 694949.324609 -2.047024
6312.500000 879638.708344 0.000000
6343.750000 418933.456624 -6.443186
6375.000000 71934.647191 -21.747324
6406.250000 87315.833777 -20.064227
6437.500000 77509.007672 -21.099043
6468.750000 52431.592699 -24.494226
6500.000000 61352.105954 -23.129497
6531.250000 15274.739811 -35.206610
6562.500000 16717.928487 -34.422437
6593.750000 5823.803756 -43.581952
6625.000000 37443.004874 -27.418673
6656.250000 40321.260538 -26.775405
6687.500000 32215.521611 -28.724783
6718.750000 35119.426911 -27.975138
6750.000000 214221.663224 -12.268819
6781.250000 439096.549983 -6.034886
6812.500000 382866.208489 -7.225146
6843.750000 73482.960823 -21.562354
6875.000000 73154.343047 -21.601284
6906.250000 63381.981537 -22.846770
6937.500000 21061.226030 -32.416414
6968.750000 41267.307717 -26.573964
7000.000000 34927.582593 -28.022716
7031.250000 51056.558294 -24.725056
7062.500000 82218.427936 -20.586703
7093.750000 24712.943128 -31.027597
7125.000000 83737.347433 -20.427703
7156.250000 42139.839954 -26.392229
7187.500000 111506.341464 -17.940095
7218.750000 193540.444913 -13.150652
7250.000000 506993.796503 -4.786034
7281.250000 538486.258767 -4.262594
7312.500000 330098.196856 -8.513224
7343.750000 53013.032644 -24.398434
7375.000000 71975.379071 -21.742407
7406.250000 9299.695768 -39.516712
7437.500000 34345.458241 -28.168700
7468.750000 20773.758563 -32.535785
7500.000000 56584.931754 -23.832071
7531.250000 8865.018778 -39.932493
7562.500000 68242.433170 -22.204997
7593.750000 31490.856965 -28.922397
7625.000000 64104.910834 -22.748261
7656.250000 63424.966546 -22.840882
7687.500000 38705.567973 -27.130618
7718.750000 99016.370333 -18.971947
7750.000000 77884.819800 -21.057030
7781.250000 34224.368060 -28.199378
7812.500000 45959.234193 -25.638631
7843.750000 36755.716922 -27.579589
7875.000000 57508.610070 -23.691429
7906.250000 6796.625978 -42.240219
7937.500000 37517.719812 -27.401358
7968.750000 24939.856735 -30.948208
8000.000000 5044.181465 -44.830273

@ -0,0 +1,257 @@
0.000000 67878.585572 -12.828819
31.250000 39750.975336 -17.476519
62.500000 20851.205185 -23.080852
93.750000 122075.862508 -7.730879
125.000000 152183.425437 -5.816128
156.250000 49801.568681 -15.518614
187.500000 23579.691951 -22.012712
218.750000 81703.272178 -11.218686
250.000000 78669.710749 -11.547324
281.250000 14071.031456 -26.496956
312.500000 48598.907498 -15.730945
343.750000 156077.299370 -5.596680
375.000000 109313.388351 -8.690008
406.250000 15788.258299 -25.496790
437.500000 87697.142440 -10.603766
468.750000 171930.374728 -4.756423
500.000000 80653.974617 -11.330959
531.250000 26284.430482 -21.069504
562.500000 219286.987174 -2.643218
593.750000 297285.513775 0.000000
625.000000 105547.569250 -8.994510
656.250000 43470.188694 -16.699644
687.500000 233384.379243 -2.102039
718.750000 226099.993257 -2.377464
750.000000 72917.252507 -12.206869
781.250000 65321.404325 -13.162365
812.500000 216544.284439 -2.752540
843.750000 157539.658672 -5.515677
875.000000 11243.779314 -28.445229
906.250000 111632.140424 -8.507690
937.500000 227180.719671 -2.336046
968.750000 118375.906743 -7.998209
1000.000000 19713.461029 -23.568217
1031.250000 206070.842353 -3.183144
1062.500000 279221.143262 -0.544509
1093.750000 87886.975240 -10.584985
1125.000000 8077.468711 -31.317969
1156.250000 36766.416534 -18.154449
1187.500000 30339.586826 -19.823282
1218.750000 6838.861377 -32.763799
1250.000000 9645.512703 -29.776969
1281.250000 27210.493170 -20.768747
1312.500000 16742.564771 -24.987035
1343.750000 5382.691149 -34.843486
1375.000000 11206.944491 -28.473731
1406.250000 20898.465575 -23.061187
1437.500000 8405.805540 -30.971888
1468.750000 2205.207228 -42.594487
1500.000000 10418.942706 -29.107002
1531.250000 14610.105414 -26.170408
1562.500000 4738.414149 -35.950815
1593.750000 2464.920423 -41.627417
1625.000000 9246.159707 -30.144247
1656.250000 8832.165077 -30.542131
1687.500000 3048.090977 -39.782916
1718.750000 2845.019969 -40.381769
1750.000000 8155.928506 -31.234007
1781.250000 5661.714210 -34.404516
1812.500000 2169.658706 -42.735646
1843.750000 3108.205774 -39.613280
1875.000000 8349.136025 -31.030644
1906.250000 4353.753914 -36.686197
1937.500000 1103.358149 -48.609145
1968.750000 3514.051887 -38.547312
2000.000000 4590.035525 -36.227154
2031.250000 1282.960803 -47.299207
2062.500000 923.206439 -50.157498
2093.750000 10436.328281 -29.092520
2125.000000 11226.805340 -28.458351
2156.250000 3098.120513 -39.641509
2187.500000 2879.601089 -40.276828
2218.750000 8395.004904 -30.983056
2250.000000 5649.990623 -34.422520
2281.250000 1899.858879 -43.889048
2312.500000 4760.030542 -35.911280
2343.750000 8959.450932 -30.417847
2375.000000 5346.096045 -34.902740
2406.250000 2169.021360 -42.738198
2437.500000 14794.863831 -26.061255
2468.750000 25512.793021 -21.328315
2500.000000 17088.441177 -24.809426
2531.250000 8284.428763 -31.098224
2562.500000 18281.526208 -24.223226
2593.750000 24851.244282 -21.556512
2625.000000 7584.824260 -31.864564
2656.250000 5385.224392 -34.839399
2687.500000 19933.298715 -23.471891
2718.750000 20624.312303 -23.175885
2750.000000 9567.156338 -29.847818
2781.250000 5546.003218 -34.583873
2812.500000 11302.412882 -28.400052
2843.750000 5920.092337 -34.016905
2875.000000 1905.758008 -43.862120
2906.250000 1183.054937 -48.003377
2937.500000 1767.534765 -44.516116
2968.750000 654.226863 -53.148907
3000.000000 428.321583 -56.828076
3031.250000 1168.298758 -48.112397
3062.500000 1562.877302 -45.584977
3093.750000 635.217305 -53.405029
3125.000000 328.185890 -59.141077
3156.250000 1298.570700 -47.194163
3187.500000 929.818493 -50.095511
3218.750000 699.044125 -52.573383
3250.000000 1209.999834 -47.807769
3281.250000 2726.556350 -40.751185
3312.500000 1727.491348 -44.715157
3343.750000 852.153974 -50.853113
3375.000000 2229.012139 -42.501226
3406.250000 2597.378795 -41.172769
3437.500000 1931.458119 -43.745769
3468.750000 1745.928799 -44.622944
3500.000000 8989.941945 -30.388337
3531.250000 11972.529466 -27.899757
3562.500000 8182.881459 -31.205350
3593.750000 1176.305384 -48.053073
3625.000000 12779.847256 -27.332962
3656.250000 13064.512053 -27.141611
3687.500000 2805.516155 -40.503219
3718.750000 5568.234497 -34.549125
3750.000000 13310.202967 -26.979781
3781.250000 10321.488775 -29.188628
3812.500000 7261.823210 -32.242562
3843.750000 9795.775975 -29.642698
3875.000000 16300.661109 -25.219371
3906.250000 7266.302055 -32.237206
3937.500000 3221.769107 -39.301587
3968.750000 9792.080281 -29.645976
4000.000000 9281.161223 -30.111429
4031.250000 5841.537778 -34.132931
4062.500000 5062.605705 -35.375993
4093.750000 17426.927100 -24.639059
4125.000000 15053.943742 -25.910469
4156.250000 4401.399026 -36.591660
4187.500000 12718.614499 -27.374679
4218.750000 40855.536460 -17.238457
4250.000000 38110.056968 -17.842683
4281.250000 19765.607869 -23.545271
4312.500000 20975.333367 -23.029298
4343.750000 28501.896648 -20.366000
4375.000000 12251.073564 -27.699992
4406.250000 6833.661721 -32.770405
4437.500000 8281.484573 -31.101311
4468.750000 9612.763439 -29.806510
4500.000000 9960.058597 -29.498237
4531.250000 4545.859728 -36.311154
4562.500000 12927.725680 -27.233032
4593.750000 12908.205053 -27.246158
4625.000000 13165.626058 -27.074645
4656.250000 6645.536208 -33.012874
4687.500000 12360.234890 -27.622940
4718.750000 12236.430878 -27.710380
4750.000000 4610.433995 -36.188639
4781.250000 5836.192037 -34.140883
4812.500000 12958.969620 -27.212066
4843.750000 7815.308086 -31.604553
4875.000000 3423.943597 -38.772943
4906.250000 7252.086217 -32.254216
4937.500000 8892.281956 -30.483210
4968.750000 4319.821577 -36.754159
5000.000000 3082.562080 -39.685238
5031.250000 7687.314272 -31.747982
5062.500000 7671.465616 -31.765908
5093.750000 4311.514360 -36.770878
5125.000000 3059.998880 -39.749050
5156.250000 4205.585386 -36.986946
5187.500000 5020.287519 -35.448903
5218.750000 4799.165368 -35.840161
5250.000000 5192.522586 -35.155907
5281.250000 8879.938152 -30.495276
5312.500000 4151.041674 -37.100333
5343.750000 3668.673590 -38.173293
5375.000000 10630.969415 -28.932018
5406.250000 11998.527260 -27.880916
5437.500000 9218.535989 -30.170236
5468.750000 5306.848657 -34.966741
5500.000000 17075.477920 -24.816018
5531.250000 18682.241082 -24.034896
5562.500000 15303.851538 -25.767460
5593.750000 10259.120568 -29.241272
5625.000000 23871.746018 -21.905791
5656.250000 26890.148619 -20.871611
5687.500000 19158.231312 -23.816367
5718.750000 7472.290773 -31.994400
5750.000000 19080.991305 -23.851456
5781.250000 7615.346712 -31.829681
5812.500000 8099.730239 -31.294064
5843.750000 13551.647605 -26.823633
5875.000000 11374.532466 -28.344804
5906.250000 5932.711760 -33.998410
5937.500000 910.627694 -50.276658
5968.750000 17035.444887 -24.836405
6000.000000 14240.795214 -26.392790
6031.250000 7949.952115 -31.456185
6062.500000 1934.211962 -43.733394
6093.750000 4207.452869 -36.983090
6125.000000 2177.118308 -42.705834
6156.250000 3256.221071 -39.209197
6187.500000 3764.624120 -37.949043
6218.750000 4303.387263 -36.787266
6250.000000 3878.102880 -37.691088
6281.250000 2584.289933 -41.216650
6312.500000 3709.749476 -38.076583
6343.750000 3319.908593 -39.040952
6375.000000 1214.651334 -47.774442
6406.250000 1445.879080 -46.260835
6437.500000 1271.941101 -47.374135
6468.750000 281.286298 -60.480503
6500.000000 1267.419622 -47.405066
6531.250000 810.904777 -51.284078
6562.500000 3189.827609 -39.388131
6593.750000 2384.158222 -41.916773
6625.000000 1660.538589 -45.058495
6656.250000 2078.844158 -43.107036
6687.500000 2475.844710 -41.589007
6718.750000 1490.134067 -45.998968
6750.000000 888.761621 -50.487769
6781.250000 1416.383096 -46.439860
6812.500000 1780.248340 -44.453863
6843.750000 1722.482032 -44.740381
6875.000000 1228.390228 -47.676748
6906.250000 1426.768700 -46.376403
6937.500000 1203.465145 -47.854805
6968.750000 1475.523234 -46.084554
7000.000000 923.167953 -50.157861
7031.250000 1182.609117 -48.006650
7062.500000 1186.533271 -47.977877
7093.750000 1013.963231 -49.343031
7125.000000 1092.115418 -48.698104
7156.250000 1435.822103 -46.321462
7187.500000 1048.954788 -49.048340
7218.750000 581.561059 -54.171569
7250.000000 1002.571705 -49.441166
7281.250000 1282.457678 -47.302614
7312.500000 1062.144177 -48.939805
7343.750000 435.280957 -56.688082
7375.000000 1145.102644 -48.286587
7406.250000 1214.635296 -47.774557
7437.500000 1182.200971 -48.009649
7468.750000 433.178919 -56.730129
7500.000000 807.325175 -51.322505
7531.250000 730.051370 -52.196407
7562.500000 469.924170 -56.022919
7593.750000 638.953468 -53.354090
7625.000000 934.013041 -50.056416
7656.250000 1154.749387 -48.213720
7687.500000 758.280458 -51.866878
7718.750000 1057.018698 -48.981822
7750.000000 1528.908557 -45.775845
7781.250000 1052.163018 -49.021814
7812.500000 140.862274 -66.487581
7843.750000 793.536129 -51.472141
7875.000000 736.751415 -52.117055
7906.250000 1057.203658 -48.980302
7937.500000 428.007340 -56.834451
7968.750000 255.192490 -61.326117
8000.000000 217.931380 -62.697080

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

@ -0,0 +1,257 @@
0.000000 25947.696766 -29.704368
31.250000 14232.779965 -34.920549
62.500000 22096.018758 -31.100063
93.750000 139051.592401 -15.122825
125.000000 184244.997660 -12.678430
156.250000 54620.786072 -23.239185
187.500000 18042.307660 -32.860502
218.750000 103289.956867 -17.705182
250.000000 108751.140608 -17.257668
281.250000 18642.971181 -32.576041
312.500000 118359.315855 -16.522295
343.750000 333750.439889 -7.517907
375.000000 234605.632458 -10.579575
406.250000 20602.206745 -31.708069
437.500000 417879.784242 -5.565317
468.750000 793080.373866 0.000000
500.000000 380450.307844 -6.380385
531.250000 13572.886674 -35.332900
562.500000 66701.163926 -21.503676
593.750000 86567.456163 -19.239251
625.000000 28001.238517 -29.042799
656.250000 4498.427880 -44.925129
687.500000 25993.818727 -29.688942
718.750000 25269.335796 -29.934468
750.000000 5874.723760 -42.606595
781.250000 11352.571743 -36.884459
812.500000 31098.591765 -28.131530
843.750000 20579.371277 -31.717702
875.000000 1287.591122 -55.790785
906.250000 8379.407013 -39.522078
937.500000 14530.604192 -34.740671
968.750000 6601.198874 -41.593888
1000.000000 667.867674 -61.492536
1031.250000 10419.394609 -37.629494
1062.500000 13053.664556 -35.671695
1093.750000 3035.346710 -48.342178
1125.000000 2338.984982 -50.605795
1156.250000 10807.893603 -37.311523
1187.500000 9202.113897 -38.708592
1218.750000 1372.437811 -55.236491
1250.000000 3109.405444 -48.132797
1281.250000 8781.946279 -39.114529
1312.500000 5339.625376 -43.436128
1343.750000 1496.951368 -54.482190
1375.000000 12721.787622 -35.895381
1406.250000 20801.449734 -31.624472
1437.500000 7947.326632 -39.981923
1468.750000 2149.874497 -51.338082
1500.000000 18728.573104 -32.536250
1531.250000 23796.103999 -30.456227
1562.500000 5920.903654 -42.538584
1593.750000 8597.901148 -39.298495
1625.000000 33429.452977 -27.503759
1656.250000 29336.510729 -28.638175
1687.500000 4249.327701 -45.419940
1718.750000 25726.268653 -29.778808
1750.000000 67910.180315 -21.347646
1781.250000 44718.032486 -24.976690
1812.500000 7737.181457 -40.214688
1843.750000 77085.281937 -20.246915
1875.000000 129783.572081 -15.721950
1906.250000 50326.303581 -23.950443
1937.500000 12261.725582 -36.215312
1968.750000 93902.127068 -18.532835
2000.000000 109036.742770 -17.234887
2031.250000 26840.283666 -29.410602
2062.500000 30903.393908 -28.186221
2093.750000 115502.475058 -16.734518
2125.000000 93369.188811 -18.582272
2156.250000 13592.512876 -35.320349
2187.500000 15333.553130 -34.273488
2218.750000 44306.332946 -25.057028
2250.000000 24157.934723 -30.325148
2281.250000 2162.296699 -51.288038
2312.500000 20072.156348 -31.934463
2343.750000 33291.793053 -27.539600
2375.000000 13137.775057 -35.615908
2406.250000 6213.706249 -42.119330
2437.500000 45406.214987 -24.844038
2468.750000 53000.955161 -23.500670
2500.000000 11142.930448 -37.046356
2531.250000 19012.615871 -32.405507
2562.500000 60582.944512 -22.339337
2593.750000 44441.279207 -25.030613
2625.000000 3654.736099 -46.729224
2656.250000 51352.095395 -23.775181
2687.500000 111150.471176 -17.068118
2718.750000 63410.292930 -21.943149
2750.000000 7538.298587 -40.440877
2781.250000 46235.653101 -24.686804
2812.500000 74221.767402 -20.575718
2843.750000 24909.489404 -30.059048
2875.000000 2025.809537 -51.854372
2906.250000 23719.340062 -30.484292
2937.500000 23536.056557 -30.551670
2968.750000 3115.506882 -48.115770
3000.000000 11306.402154 -36.919855
3031.250000 39060.011342 -26.151697
3062.500000 29279.264425 -28.655141
3093.750000 4495.536716 -44.930713
3125.000000 17888.568348 -32.934832
3156.250000 39289.582199 -26.100796
3187.500000 19857.644706 -32.027789
3218.750000 4089.332820 -45.753295
3250.000000 34318.700366 -27.275727
3281.250000 52382.236443 -23.602663
3312.500000 21159.505347 -31.476234
3343.750000 5069.674270 -43.886743
3375.000000 19760.244325 -32.070498
3406.250000 18534.818463 -32.626577
3437.500000 3114.094336 -48.119709
3468.750000 5093.978373 -43.845202
3500.000000 17950.906081 -32.904617
3531.250000 13077.606233 -35.655779
3562.500000 2574.377101 -49.772901
3593.750000 2525.890255 -49.938055
3625.000000 5923.420913 -42.534892
3656.250000 3063.363233 -48.262374
3687.500000 297.482807 -68.517107
3718.750000 1414.569367 -54.973859
3750.000000 1862.326480 -52.585228
3781.250000 579.961287 -62.718364
3812.500000 82.601126 -79.646625
3843.750000 859.190592 -59.304554
3875.000000 906.976881 -58.834420
3906.250000 221.856208 -71.064912
3937.500000 88.268251 -79.070254
3968.750000 96.499866 -78.295810
4000.000000 54.274634 -83.294406
4031.250000 18.604754 -92.593866
4062.500000 430.793943 -65.300952
4093.750000 826.035865 -59.646366
4125.000000 276.610336 -69.148976
4156.250000 115.325804 -76.747814
4187.500000 2330.990417 -50.635534
4218.750000 3395.710977 -47.367730
4250.000000 1609.772956 -53.851052
4281.250000 508.336057 -63.863326
4312.500000 4455.416547 -45.008578
4343.750000 4384.335080 -45.148269
4375.000000 1052.145459 -57.544828
4406.250000 866.201285 -59.233968
4437.500000 1913.247095 -52.350923
4468.750000 1297.659303 -55.723130
4500.000000 362.782002 -66.793429
4531.250000 2843.491340 -48.909306
4562.500000 4598.348079 -44.734307
4593.750000 1851.382535 -52.636421
4625.000000 1222.976437 -56.237982
4656.250000 5463.789545 -43.236465
4687.500000 5878.521481 -42.600982
4718.750000 1352.186727 -55.365611
4750.000000 5606.323901 -43.012780
4781.250000 15511.047857 -34.173521
4812.500000 13188.045336 -35.582735
4843.750000 2264.820652 -50.885668
4875.000000 1099.684279 -57.160984
4906.250000 7570.791128 -40.403519
4937.500000 6699.331588 -41.465715
4968.750000 2392.864702 -50.407981
5000.000000 6511.442838 -41.712799
5031.250000 11083.481488 -37.092820
5062.500000 7681.854999 -40.277022
5093.750000 4816.221621 -44.332215
5125.000000 5336.015063 -43.442003
5156.250000 4827.925730 -44.311132
5187.500000 2680.201066 -49.422997
5218.750000 5416.082525 -43.312639
5250.000000 4864.706620 -44.245211
5281.250000 7672.011199 -40.288159
5312.500000 1013.277656 -57.871775
5343.750000 4397.847681 -45.121540
5375.000000 11191.563762 -37.008529
5406.250000 7803.238615 -40.140846
5437.500000 2375.533958 -50.471119
5468.750000 6842.004882 -41.282676
5500.000000 12625.466243 -35.961396
5531.250000 6246.557229 -42.073530
5562.500000 3583.593669 -46.899969
5593.750000 6567.930297 -41.637773
5625.000000 14364.271076 -34.840672
5656.250000 7960.052829 -39.968025
5687.500000 6324.387265 -41.965975
5718.750000 2282.558917 -50.817904
5750.000000 6048.088732 -42.353981
5781.250000 2351.165312 -50.560681
5812.500000 3462.465121 -47.198636
5843.750000 7544.900906 -40.433273
5875.000000 6092.410802 -42.290560
5906.250000 4480.734868 -44.959359
5937.500000 6782.849474 -41.358100
5968.750000 7841.980960 -40.097828
6000.000000 6061.206617 -42.335162
6031.250000 3899.966165 -46.165127
6062.500000 2252.005507 -50.934955
6093.750000 466.720156 -64.605213
6125.000000 499.256671 -64.019867
6156.250000 717.258510 -60.872830
6187.500000 708.530944 -60.979168
6218.750000 400.687348 -65.930231
6250.000000 513.368840 -63.777754
6281.250000 557.333737 -63.064037
6312.500000 313.357789 -68.065534
6343.750000 62.243505 -82.104463
6375.000000 94.067209 -78.517579
6406.250000 51.646730 -83.725488
6437.500000 48.709240 -84.234117
6468.750000 17.606216 -93.073024
6500.000000 153.352457 -74.272529
6531.250000 450.946519 -64.903843
6562.500000 479.620444 -64.368390
6593.750000 306.955574 -68.244834
6625.000000 256.487866 -69.805008
6656.250000 258.653484 -69.731977
6687.500000 207.134854 -71.661280
6718.750000 131.455079 -75.610797
6750.000000 377.912216 -66.438525
6781.250000 730.193382 -60.717586
6812.500000 954.560305 -58.390277
6843.750000 1790.580046 -52.926469
6875.000000 1955.122105 -52.162866
6906.250000 1036.792241 -57.672509
6937.500000 1323.969540 -55.548784
6968.750000 1593.489812 -53.939358
7000.000000 1630.136577 -53.741864
7031.250000 1862.228871 -52.585683
7062.500000 942.614657 -58.499660
7093.750000 2676.903999 -49.433688
7125.000000 3703.390659 -46.614354
7156.250000 2398.364884 -50.388039
7187.500000 2264.445596 -50.887106
7218.750000 2619.765315 -49.621096
7250.000000 1393.190313 -55.106135
7281.250000 599.170432 -62.435337
7312.500000 721.886012 -60.816972
7343.750000 1138.926971 -56.856426
7375.000000 1892.770846 -52.444383
7406.250000 1245.421215 -56.080019
7437.500000 1516.177934 -54.371341
7468.750000 3214.246522 -47.844760
7500.000000 2031.149974 -51.831504
7531.250000 1382.673462 -55.171952
7562.500000 1347.675193 -55.394639
7593.750000 1766.626072 -53.043451
7625.000000 1594.893518 -53.931710
7656.250000 866.931092 -59.226652
7687.500000 2028.618092 -51.842338
7718.750000 2263.226558 -50.891783
7750.000000 996.407442 -58.017605
7781.250000 835.312055 -59.549369
7812.500000 326.078665 -67.719896
7843.750000 766.115637 -60.300458
7875.000000 287.132699 -68.824691
7906.250000 784.510304 -60.094371
7937.500000 1529.507392 -54.295312
7968.750000 890.702238 -58.991693
8000.000000 415.130018 -65.622661

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

@ -0,0 +1,257 @@
0.000000 34491.230319 -19.679485
31.250000 46506.216552 -17.083439
62.500000 13081.531672 -28.100487
93.750000 137206.154883 -7.686187
125.000000 235480.119582 -2.994574
156.250000 109645.190140 -9.633867
187.500000 28867.508145 -21.225473
218.750000 243556.837817 -2.701652
250.000000 332416.777592 0.000000
281.250000 105628.817663 -9.958010
312.500000 26146.533983 -22.085376
343.750000 198160.699987 -4.493308
375.000000 222494.567392 -3.487270
406.250000 56884.569862 -15.333769
437.500000 22302.929024 -23.466421
468.750000 96652.304911 -10.729414
500.000000 91191.354608 -11.234585
531.250000 18199.934592 -25.232262
562.500000 11135.088695 -29.499785
593.750000 27087.542563 -21.778267
625.000000 21351.452424 -23.845110
656.250000 1575.143828 -46.487254
687.500000 4366.709832 -37.630572
718.750000 11027.904767 -29.583799
750.000000 7300.265801 -33.166885
781.250000 608.199053 -54.752744
812.500000 2624.499335 -42.052729
843.750000 5637.581631 -35.411802
875.000000 3016.262931 -40.844275
906.250000 157.416791 -66.492638
937.500000 872.223732 -51.621101
968.750000 1589.336867 -46.409340
1000.000000 634.312308 -54.387596
1031.250000 190.340831 -64.843019
1062.500000 2008.524811 -44.376115
1093.750000 3134.192121 -40.511146
1125.000000 1194.437970 -48.890387
1156.250000 547.996529 -55.658103
1187.500000 3401.168613 -39.801095
1218.750000 4165.097236 -38.041156
1250.000000 1309.173256 -48.093716
1281.250000 565.410996 -55.386374
1312.500000 2408.786742 -42.797692
1343.750000 2311.199959 -43.156908
1375.000000 586.347335 -55.070560
1406.250000 989.805757 -50.522659
1437.500000 4409.648857 -37.545579
1468.750000 4122.095280 -38.131298
1500.000000 811.124719 -52.251906
1531.250000 1774.199662 -45.453609
1562.500000 5060.626654 -36.349573
1593.750000 3692.200119 -39.087954
1625.000000 466.118067 -57.063740
1656.250000 4741.228543 -36.915841
1687.500000 11431.686041 -29.271453
1718.750000 7429.870165 -33.014034
1750.000000 504.516212 -56.376156
1781.250000 5061.596234 -36.347909
1812.500000 10740.346648 -29.813293
1843.750000 5882.475184 -35.042457
1875.000000 223.159370 -63.461356
1906.250000 7655.977617 -32.753646
1937.500000 13518.874951 -27.814848
1968.750000 6061.749192 -34.781699
2000.000000 1657.670164 -46.043696
2031.250000 23881.020177 -22.872601
2062.500000 36307.527232 -19.233725
2093.750000 9008.715015 -31.340402
2125.000000 5012.396899 -36.432750
2156.250000 32959.561751 -20.074030
2187.500000 40424.003166 -18.300872
2218.750000 10900.949571 -29.684372
2250.000000 3619.768905 -39.260042
2281.250000 8805.394052 -31.538683
2312.500000 7353.232460 -33.104093
2343.750000 1539.060499 -46.688545
2375.000000 2663.478403 -41.924675
2406.250000 11072.311478 -29.548893
2437.500000 10197.338368 -30.263922
2468.750000 2010.051995 -44.369513
2500.000000 5045.771658 -36.375107
2531.250000 12236.227343 -28.680708
2562.500000 7721.787954 -32.679301
2593.750000 1001.514129 -50.420517
2625.000000 1855.363351 -45.065079
2656.250000 4670.053771 -37.047221
2687.500000 2826.370833 -41.409076
2718.750000 327.717027 -60.123679
2750.000000 9778.868744 -30.627886
2781.250000 18820.194835 -24.941176
2812.500000 9989.884874 -30.442449
2843.750000 1250.841032 -48.489616
2875.000000 8550.445137 -31.793884
2906.250000 12043.338159 -28.818721
2937.500000 5559.806331 -35.532465
2968.750000 3124.090028 -40.539188
3000.000000 26106.034918 -22.098840
3031.250000 37327.019778 -18.993192
3062.500000 13699.515925 -27.699554
3093.750000 8772.317574 -31.571372
3125.000000 55792.714443 -15.502109
3156.250000 68436.894396 -13.727853
3187.500000 20411.987527 -24.235953
3218.750000 6711.437797 -33.897347
3250.000000 39559.562178 -18.488629
3281.250000 39992.728382 -18.394038
3312.500000 9844.687314 -30.569620
3343.750000 5981.663038 -34.897220
3375.000000 17410.019252 -25.617674
3406.250000 13927.865062 -27.555968
3437.500000 1629.116605 -46.194615
3468.750000 10020.438886 -30.415924
3500.000000 27359.500796 -21.691495
3531.250000 18176.180567 -25.243606
3562.500000 1784.875131 -45.401502
3593.750000 6703.343025 -33.907830
3625.000000 13364.652658 -27.914505
3656.250000 7026.642796 -33.498701
3687.500000 372.266447 -59.016581
3718.750000 1928.385506 -44.729782
3750.000000 3348.853954 -39.935735
3781.250000 1416.311472 -47.410483
3812.500000 353.067507 -59.476504
3843.750000 928.467006 -51.078329
3875.000000 1145.405463 -49.254474
3906.250000 352.724179 -59.484954
3937.500000 240.041358 -62.827937
3968.750000 827.321312 -52.080174
4000.000000 914.639779 -51.208657
4031.250000 149.056158 -66.966660
4062.500000 193.696267 -64.691234
4093.750000 1175.393714 -49.029991
4125.000000 1157.312349 -49.164647
4156.250000 299.076788 -60.918005
4187.500000 1365.220133 -47.729605
4218.750000 4319.921655 -37.724141
4250.000000 4065.040545 -38.252361
4281.250000 421.673498 -57.934133
4312.500000 2220.850013 -43.503274
4343.750000 8293.561752 -32.058837
4375.000000 6276.651305 -34.479099
4406.250000 771.035499 -52.692171
4437.500000 5272.240749 -35.993754
4468.750000 12918.309846 -28.209545
4500.000000 10068.472737 -30.374387
4531.250000 1168.860850 -49.078402
4562.500000 4601.362725 -37.175929
4593.750000 10773.992822 -29.786125
4625.000000 6005.166809 -34.863157
4656.250000 2069.804086 -44.115074
4687.500000 7981.956662 -32.391471
4718.750000 12235.906564 -28.680936
4750.000000 7668.702391 -32.739221
4781.250000 11150.918502 -29.487446
4812.500000 16223.782358 -26.230616
4843.750000 22408.583775 -23.425371
4875.000000 6131.303999 -34.682602
4906.250000 6786.657151 -33.800541
4937.500000 31716.803509 -20.407870
4968.750000 30550.634706 -20.733254
5000.000000 3496.161399 -39.561829
5031.250000 13219.897283 -28.009097
5062.500000 29275.865110 -21.103464
5093.750000 27158.517744 -21.755537
5125.000000 3536.647979 -39.461822
5156.250000 9336.260993 -31.030199
5187.500000 20401.577255 -24.240384
5218.750000 16007.089126 -26.347411
5250.000000 2911.384082 -41.151669
5281.250000 10759.013979 -29.798209
5312.500000 20248.310620 -24.305883
5343.750000 11934.355340 -28.897679
5375.000000 10170.237740 -30.287037
5406.250000 20712.531200 -24.108995
5437.500000 29807.696804 -20.947090
5468.750000 13554.839976 -27.791771
5500.000000 5249.506227 -36.031290
5531.250000 19058.141379 -24.832048
5562.500000 40074.132961 -18.376376
5593.750000 17234.455177 -25.705708
5625.000000 8864.967774 -31.480115
5656.250000 16518.930912 -26.074020
5687.500000 21063.697907 -23.962966
5718.750000 9819.023348 -30.592293
5750.000000 1729.500749 -45.675244
5781.250000 4674.613137 -37.038745
5812.500000 5313.755199 -35.925628
5843.750000 1626.122923 -46.210591
5875.000000 5149.003703 -36.199195
5906.250000 15071.483510 -26.870539
5937.500000 16489.080750 -26.089730
5968.750000 5669.288132 -35.363088
6000.000000 818.118286 -52.177337
6031.250000 6292.676896 -34.456950
6062.500000 6901.744589 -33.654481
6093.750000 1812.274019 -45.269181
6125.000000 1585.894632 -46.428172
6156.250000 2822.659294 -41.420489
6187.500000 1813.914146 -45.261324
6218.750000 123.875958 -68.573918
6250.000000 289.131086 -61.211763
6281.250000 2295.950943 -43.214407
6312.500000 2180.649482 -43.661941
6343.750000 731.749404 -53.146411
6375.000000 686.244821 -53.704077
6406.250000 1022.973921 -50.236367
6437.500000 306.732320 -60.698468
6468.750000 454.493058 -57.283114
6500.000000 1081.733444 -49.751254
6531.250000 1735.076070 -45.647288
6562.500000 1275.073716 -48.322953
6593.750000 454.557215 -57.281888
6625.000000 916.788401 -51.188277
6656.250000 1196.954895 -48.872103
6687.500000 533.971097 -55.883304
6718.750000 542.497869 -55.745698
6750.000000 527.814121 -55.984039
6781.250000 364.866549 -59.190978
6812.500000 25.984357 -82.139419
6843.750000 238.055548 -62.900093
6875.000000 410.889800 -58.159151
6906.250000 458.017177 -57.216023
6937.500000 345.901953 -59.654598
6968.750000 509.332408 -56.293632
7000.000000 964.695740 -50.745851
7031.250000 732.573081 -53.136640
7062.500000 89.956624 -71.352996
7093.750000 638.894214 -54.325080
7125.000000 1161.587506 -49.132620
7156.250000 880.359348 -51.540459
7187.500000 116.197098 -69.129753
7218.750000 823.060533 -52.125023
7250.000000 1545.653033 -46.651418
7281.250000 854.783073 -51.796540
7312.500000 2026.193964 -44.300038
7343.750000 2209.738842 -43.546840
7375.000000 4980.707482 -36.487838
7406.250000 3068.381222 -40.695472
7437.500000 1764.988190 -45.498823
7468.750000 3407.732439 -39.784349
7500.000000 4252.615195 -37.860537
7531.250000 1069.580401 -49.849390
7562.500000 1146.548919 -49.245807
7593.750000 2624.387142 -42.053101
7625.000000 2852.731454 -41.328441
7656.250000 1058.799177 -49.937387
7687.500000 382.691011 -58.776693
7718.750000 3356.793060 -39.915167
7750.000000 3316.745808 -40.019415
7781.250000 1086.916418 -49.709736
7812.500000 1254.207802 -48.466269
7843.750000 2406.832182 -42.804743
7875.000000 1759.878499 -45.524005
7906.250000 149.673075 -66.930785
7937.500000 576.780791 -55.213443
7968.750000 547.112867 -55.672120
8000.000000 215.558897 -63.762340

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

@ -0,0 +1,257 @@
0.000000 40454.683887 -24.102498
31.250000 33994.639808 -25.613666
62.500000 6389.098467 -40.133083
93.750000 132549.394348 -13.794320
125.000000 163580.593309 -11.967239
156.250000 44582.916803 -23.258505
187.500000 22453.947950 -29.216020
218.750000 102388.573003 -16.036845
250.000000 96029.789787 -16.593755
281.250000 11176.053808 -35.276105
312.500000 140939.603572 -13.261214
343.750000 371264.791112 -4.848199
375.000000 240092.491188 -8.634303
406.250000 22007.944603 -29.390285
437.500000 380011.789921 -4.645933
468.750000 648774.438157 0.000000
500.000000 267858.964233 -7.683751
531.250000 25403.110195 -28.144137
562.500000 117790.334200 -14.819682
593.750000 139460.327509 -13.352861
625.000000 35025.520606 -25.354183
656.250000 31080.831353 -26.392022
687.500000 122759.956689 -14.460740
718.750000 108768.148852 -15.511840
750.000000 27412.794188 -27.482808
781.250000 21673.788009 -29.523178
812.500000 57660.175764 -21.024355
843.750000 32086.935230 -26.115310
875.000000 706.414723 -59.260680
906.250000 11679.385340 -34.893475
937.500000 17194.584465 -31.534041
968.750000 6125.855147 -40.498540
1000.000000 1867.507262 -50.816629
1031.250000 9598.526772 -36.597783
1062.500000 8625.442506 -37.526247
1093.750000 1438.307814 -53.084838
1125.000000 2273.363406 -49.108497
1156.250000 5939.306887 -40.767159
1187.500000 3896.603554 -44.428150
1218.750000 321.782945 -66.090614
1250.000000 3365.449571 -45.701013
1281.250000 6150.283975 -40.463971
1312.500000 2810.731490 -47.265487
1343.750000 787.866752 -58.312819
1375.000000 5122.329941 -42.052524
1406.250000 6296.116285 -40.260420
1437.500000 1702.049655 -51.622430
1468.750000 1032.205124 -55.966554
1500.000000 4171.535230 -43.835956
1531.250000 3683.818863 -44.915909
1562.500000 439.301564 -63.386620
1593.750000 1457.036763 -52.972464
1625.000000 3408.378981 -45.590917
1656.250000 2034.746049 -50.071670
1687.500000 32.601491 -85.977125
1718.750000 1119.627844 -55.260401
1750.000000 1926.906534 -50.544662
1781.250000 759.297610 -58.633634
1812.500000 530.077832 -61.755082
1843.750000 2668.139145 -47.717705
1875.000000 2752.524144 -47.447252
1906.250000 508.016949 -62.124311
1937.500000 640.988687 -60.104867
1968.750000 1725.073313 -51.505723
2000.000000 1261.917892 -54.221253
2031.250000 83.013082 -77.858944
2062.500000 2045.396225 -50.026326
2093.750000 4092.809702 -44.001444
2125.000000 2166.932882 -49.524965
2156.250000 444.299967 -63.288349
2187.500000 1935.041632 -50.508068
2218.750000 2466.010532 -48.401976
2250.000000 825.515769 -57.907367
2281.250000 485.714074 -62.514261
2312.500000 1501.112852 -52.713608
2343.750000 1589.839906 -52.214807
2375.000000 889.125081 -57.262617
2406.250000 5932.111973 -40.777688
2437.500000 14574.861419 -32.969786
2468.750000 8752.987254 -37.398749
2500.000000 3463.501349 -45.451567
2531.250000 3166.347001 -46.230704
2562.500000 10169.542628 -36.095846
2593.750000 5395.312229 -41.601543
2625.000000 2223.385463 -49.301579
2656.250000 8822.354132 -37.330185
2687.500000 10378.296040 -35.919354
2718.750000 3478.084840 -45.415071
2750.000000 2484.778388 -48.336121
2781.250000 13531.932907 -33.614678
2812.500000 10791.256793 -35.580434
2843.750000 1172.253288 -54.861445
2875.000000 390.922805 -64.400054
2906.250000 1646.259782 -51.911907
2937.500000 732.493522 -58.945799
2968.750000 133.909351 -73.705657
3000.000000 782.482962 -58.372377
3031.250000 1146.456468 -55.054723
3062.500000 425.962349 -63.654450
3093.750000 10.379334 -95.918485
3125.000000 31.177008 -86.365186
3156.250000 99.739388 -76.264541
3187.500000 64.670914 -80.027695
3218.750000 33.455796 -85.752447
3250.000000 59.142406 -80.803895
3281.250000 23.221812 -88.923952
3312.500000 33.978374 -85.617823
3343.750000 44.492098 -83.276217
3375.000000 105.172405 -75.803839
3406.250000 40.866896 -84.014441
3437.500000 17.516442 -91.372957
3468.750000 194.729827 -70.453225
3500.000000 316.712878 -66.228560
3531.250000 126.038754 -74.231793
3562.500000 48.400333 -82.544908
3593.750000 132.660309 -73.787055
3625.000000 111.898367 -75.265400
3656.250000 8.414805 -97.740994
3687.500000 109.612450 -75.444677
3718.750000 271.632861 -67.562228
3750.000000 164.856947 -71.899730
3781.250000 12.650888 -94.199454
3812.500000 343.913295 -65.512895
3843.750000 672.277185 -59.690907
3875.000000 244.092060 -68.490802
3906.250000 102.549808 -76.023178
3937.500000 1009.019694 -56.163882
3968.750000 1298.337538 -53.974122
4000.000000 269.467033 -67.631762
4031.250000 142.676197 -73.154844
4062.500000 1286.200244 -54.055703
4093.750000 1167.235139 -54.898708
4125.000000 249.490738 -68.300786
4156.250000 1327.537643 -53.780938
4187.500000 3463.882208 -45.450612
4218.750000 2032.856038 -50.079742
4250.000000 381.373294 -64.614869
4281.250000 2185.552159 -49.450651
4312.500000 3529.195186 -45.288361
4343.750000 1486.555310 -52.798253
4375.000000 439.049953 -63.391596
4406.250000 1370.531536 -53.504094
4437.500000 1566.974296 -52.340637
4468.750000 1805.461920 -51.110108
4500.000000 918.912843 -56.976388
4531.250000 1200.197488 -54.656820
4562.500000 1225.234777 -54.477488
4593.750000 390.663905 -64.405809
4625.000000 483.974216 -62.545430
4656.250000 717.534666 -59.125017
4687.500000 576.127477 -61.031503
4718.750000 318.010545 -66.193044
4750.000000 1087.501326 -55.513279
4781.250000 1185.645859 -54.762775
4812.500000 246.777781 -68.395754
4843.750000 382.160465 -64.596959
4875.000000 1054.004175 -55.785028
4906.250000 1034.636240 -55.946121
4937.500000 409.105553 -64.005167
4968.750000 97.779769 -76.436894
5000.000000 104.500494 -75.859508
5031.250000 350.263052 -65.353988
5062.500000 461.385443 -62.960597
5093.750000 620.482176 -60.387288
5125.000000 764.946871 -58.569249
5156.250000 165.221410 -71.880548
5187.500000 199.722345 -70.233341
5218.750000 786.246851 -58.330696
5250.000000 789.405441 -58.295872
5281.250000 157.063798 -72.320353
5312.500000 281.343070 -67.257150
5343.750000 734.874163 -58.917615
5375.000000 397.402087 -64.257272
5406.250000 488.138698 -62.471010
5437.500000 637.832588 -60.147741
5468.750000 845.713935 -57.697405
5500.000000 679.329948 -59.600259
5531.250000 1112.154160 -55.318575
5562.500000 795.987266 -58.223752
5593.750000 1159.481304 -54.956600
5625.000000 1349.172956 -53.640522
5656.250000 654.532945 -59.923244
5687.500000 1527.974472 -52.559553
5718.750000 1860.131825 -50.851000
5750.000000 341.313743 -65.578799
5781.250000 850.797843 -57.645347
5812.500000 1812.878338 -51.074501
5843.750000 1057.324775 -55.757706
5875.000000 240.305499 -68.626600
5906.250000 2135.905654 -49.650233
5937.500000 4057.483978 -44.076738
5968.750000 2465.183321 -48.404890
6000.000000 1462.133622 -52.942133
6031.250000 1638.535386 -51.952758
6062.500000 831.918734 -57.840257
6093.750000 456.046884 -63.061685
6125.000000 2029.071211 -50.095929
6156.250000 3848.069862 -44.537016
6187.500000 3191.359081 -46.162361
6218.750000 1054.112140 -55.784138
6250.000000 454.034351 -63.100100
6281.250000 730.154270 -58.973582
6312.500000 517.601838 -61.961958
6343.750000 248.227180 -68.344888
6375.000000 434.153806 -63.489002
6406.250000 446.141455 -63.252423
6437.500000 162.352393 -72.032701
6468.750000 442.454404 -63.324504
6500.000000 1022.652061 -56.047317
6531.250000 1023.526137 -56.039896
6562.500000 682.541036 -59.559299
6593.750000 443.005687 -63.313689
6625.000000 439.711126 -63.378526
6656.250000 482.131356 -62.578567
6687.500000 384.531129 -64.543245
6718.750000 460.224316 -62.982483
6750.000000 364.750362 -65.001960
6781.250000 59.355354 -80.772677
6812.500000 461.843599 -62.951976
6843.750000 565.966979 -61.186053
6875.000000 320.237255 -66.132438
6906.250000 284.896971 -67.148118
6937.500000 275.310136 -67.445431
6968.750000 225.303296 -69.186524
7000.000000 346.831325 -65.439508
7031.250000 129.715366 -73.982046
7062.500000 479.570426 -62.624827
7093.750000 501.735228 -62.232383
7125.000000 352.651111 -65.294969
7156.250000 118.348943 -74.778587
7187.500000 117.804042 -74.818671
7218.750000 157.734106 -72.283362
7250.000000 31.617985 -86.243191
7281.250000 213.034420 -69.672879
7312.500000 175.921561 -71.335493
7343.750000 127.035439 -74.163377
7375.000000 133.847126 -73.709694
7406.250000 83.075845 -77.852379
7437.500000 51.215968 -82.053767
7468.750000 79.636685 -78.219611
7500.000000 92.945165 -76.877339
7531.250000 107.199736 -75.638000
7562.500000 109.733386 -75.435099
7593.750000 108.534567 -75.530513
7625.000000 183.536379 -70.967431
7656.250000 182.620530 -71.010883
7687.500000 105.423152 -75.783155
7718.750000 100.906275 -76.163511
7750.000000 175.260154 -71.368211
7781.250000 100.768527 -76.175376
7812.500000 95.692411 -76.624325
7843.750000 495.291406 -62.344659
7875.000000 540.805146 -61.581058
7906.250000 237.604068 -68.724797
7937.500000 364.974387 -64.996627
7968.750000 349.608412 -65.370237
8000.000000 299.857421 -66.703579

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

@ -0,0 +1,257 @@
0.000000 20952.182006 -29.406241
31.250000 25979.360650 -27.538257
62.500000 11185.253055 -34.857910
93.750000 138147.071072 -13.023993
125.000000 233363.427297 -8.470171
156.250000 99655.258080 -15.860822
187.500000 26338.539668 -27.418993
218.750000 208905.822484 -9.431816
250.000000 302773.041223 -6.208483
281.250000 85539.561389 -17.187486
312.500000 53564.682854 -21.253256
343.750000 498199.204808 -1.882766
375.000000 618787.216128 0.000000
406.250000 178343.586779 -10.805677
437.500000 25763.586145 -27.610700
468.750000 122367.931307 -14.077474
500.000000 120219.503690 -14.231328
531.250000 25069.453888 -27.847929
562.500000 12993.770936 -33.556123
593.750000 33398.919197 -25.356178
625.000000 29746.051086 -26.362240
656.250000 3851.055409 -44.119231
687.500000 6153.612260 -40.048224
718.750000 17516.370623 -30.961944
750.000000 12490.169977 -33.899460
781.250000 2077.560845 -49.479752
812.500000 1267.965876 -53.768675
843.750000 3474.835198 -45.012142
875.000000 2064.397170 -49.534962
906.250000 449.158575 -62.782833
937.500000 4218.151941 -43.328382
968.750000 8363.546699 -37.383017
1000.000000 4444.537105 -42.874296
1031.250000 739.427424 -58.452916
1062.500000 10683.631999 -35.256448
1093.750000 18234.033086 -30.613172
1125.000000 7357.527988 -38.496188
1156.250000 4155.379240 -43.458613
1187.500000 25525.046104 -27.691496
1218.750000 38046.382051 -24.224559
1250.000000 13585.132142 -33.169549
1281.250000 9916.806932 -35.903389
1312.500000 50104.641973 -21.833267
1343.750000 57653.134159 -20.614368
1375.000000 12432.808638 -33.939442
1406.250000 8259.230616 -37.492035
1437.500000 20815.987344 -29.462886
1468.750000 20970.820153 -29.398518
1500.000000 4265.250181 -43.231936
1531.250000 4990.280415 -41.868328
1562.500000 15130.043185 -32.234023
1593.750000 12582.761177 -33.835308
1625.000000 920.382190 -56.551463
1656.250000 6244.187385 -39.921308
1687.500000 14737.857057 -32.462140
1718.750000 10349.346814 -35.532568
1750.000000 322.189811 -65.668591
1781.250000 7103.871948 -38.800924
1812.500000 16989.431957 -31.227249
1843.750000 10780.297359 -35.178212
1875.000000 1490.656957 -52.363272
1906.250000 6927.518437 -39.019273
1937.500000 13592.396618 -33.164906
1968.750000 7123.310208 -38.777190
2000.000000 3210.432423 -45.699556
2031.250000 24161.912750 -28.168200
2062.500000 46275.797163 -22.523748
2093.750000 24162.996231 -28.167811
2125.000000 6051.241239 -40.193937
2156.250000 4668.800348 -42.446721
2187.500000 5424.502185 -41.143629
2218.750000 740.760289 -58.437273
2250.000000 846.937575 -57.273799
2281.250000 907.032031 -56.678374
2312.500000 1334.122512 -53.326912
2343.750000 915.732533 -56.595454
2375.000000 283.158617 -66.790231
2406.250000 2027.548905 -49.691400
2437.500000 2191.578887 -49.015684
2468.750000 320.732616 -65.707964
2500.000000 330.861637 -65.437898
2531.250000 1458.534259 -52.552494
2562.500000 1183.613412 -54.366629
2593.750000 183.141286 -70.575101
2625.000000 604.137936 -60.208105
2656.250000 1662.034543 -51.418026
2687.500000 1377.539948 -53.048743
2718.750000 308.377963 -66.049160
2750.000000 1156.328486 -54.569202
2781.250000 2915.883746 -46.535423
2812.500000 1716.808536 -51.136389
2843.750000 371.625250 -64.428722
2875.000000 1052.555612 -55.385926
2906.250000 1607.548656 -51.707544
2937.500000 747.370648 -58.360106
2968.750000 473.613995 -62.322336
3000.000000 3047.849338 -46.150957
3031.250000 5384.676304 -41.207635
3062.500000 2648.323949 -47.371404
3093.750000 2044.611085 -49.618612
3125.000000 6339.077562 -39.790305
3156.250000 8219.184173 -37.534252
3187.500000 3029.669521 -46.202921
3218.750000 993.213958 -55.889970
3250.000000 1859.328678 -50.443703
3281.250000 2390.394035 -48.261437
3312.500000 848.015863 -57.262747
3343.750000 223.059476 -68.862413
3375.000000 330.554771 -65.445958
3406.250000 278.421857 -66.936760
3437.500000 84.759889 -77.267019
3468.750000 122.076536 -74.098183
3500.000000 439.059662 -62.980356
3531.250000 362.003638 -64.656568
3562.500000 32.657226 -85.551241
3593.750000 116.027349 -74.539619
3625.000000 327.842708 -65.517516
3656.250000 286.613654 -66.684889
3687.500000 69.267765 -79.020203
3718.750000 70.186126 -78.905801
3750.000000 111.515136 -74.884150
3781.250000 29.020067 -86.576858
3812.500000 46.143189 -82.548675
3843.750000 77.316792 -78.065350
3875.000000 143.330746 -72.704039
3906.250000 88.134228 -76.927935
3937.500000 29.109697 -86.550073
3968.750000 162.454029 -71.616217
4000.000000 223.563070 -68.842825
4031.250000 73.416011 -78.515011
4062.500000 112.192353 -74.831561
4093.750000 402.329821 -63.739182
4125.000000 443.005551 -62.902643
4156.250000 147.889688 -72.432069
4187.500000 129.324563 -73.597206
4218.750000 1007.972404 -55.761854
4250.000000 1244.353372 -53.931952
4281.250000 374.540843 -64.360843
4312.500000 134.104860 -73.281936
4343.750000 391.155883 -63.983829
4375.000000 296.831246 -66.380634
4406.250000 61.461990 -80.058694
4437.500000 714.896748 -58.745960
4468.750000 2127.808583 -49.272176
4500.000000 2194.026214 -49.005990
4531.250000 419.630220 -63.373492
4562.500000 836.588275 -57.380591
4593.750000 2567.454663 -47.640771
4625.000000 3145.584220 -45.876800
4656.250000 1422.080772 -52.772341
4687.500000 2860.447893 -46.702146
4718.750000 6066.529322 -40.172021
4750.000000 4721.998849 -42.348309
4781.250000 2770.746537 -46.978891
4812.500000 1853.552225 -50.470730
4843.750000 1512.023429 -52.239656
4875.000000 205.900700 -69.557670
4906.250000 731.911243 -58.541658
4937.500000 160.336632 -71.730172
4968.750000 991.638700 -55.903757
5000.000000 631.730682 -59.820187
5031.250000 273.777813 -67.082862
5062.500000 1954.947705 -50.008124
5093.750000 2197.504035 -48.992233
5125.000000 119.012661 -74.318963
5156.250000 1183.272468 -54.369131
5187.500000 1692.434026 -51.260592
5218.750000 2729.727403 -47.108441
5250.000000 867.122434 -57.069218
5281.250000 1406.089454 -52.870568
5312.500000 3986.386233 -43.819239
5343.750000 3768.421814 -44.307636
5375.000000 1760.531048 -50.917953
5406.250000 1679.541702 -51.327011
5437.500000 3385.416338 -45.238585
5468.750000 2905.516919 -46.566358
5500.000000 573.218351 -60.664425
5531.250000 495.899052 -61.922961
5562.500000 2408.889851 -48.194488
5593.750000 1043.394558 -55.461855
5625.000000 281.239683 -66.849295
5656.250000 1038.381251 -55.503690
5687.500000 1702.923788 -51.206922
5718.750000 864.934444 -57.091163
5750.000000 342.625465 -65.134434
5781.250000 971.487701 -56.082081
5812.500000 1735.854885 -51.040558
5843.750000 1210.060619 -54.174684
5875.000000 829.039392 -57.459323
5906.250000 2133.452206 -49.249168
5937.500000 3260.220874 -45.565886
5968.750000 2727.676768 -47.114969
6000.000000 1336.539864 -53.311188
6031.250000 199.747770 -69.821188
6062.500000 770.618413 -58.094039
6093.750000 368.971727 -64.490965
6125.000000 58.686301 -80.460092
6156.250000 1734.281556 -51.048435
6187.500000 2038.585511 -49.644248
6218.750000 1023.551652 -55.628631
6250.000000 747.626474 -58.357133
6281.250000 707.414646 -58.837346
6312.500000 487.520022 -62.070978
6343.750000 151.269353 -72.235808
6375.000000 203.362430 -69.665412
6406.250000 373.640342 -64.381751
6437.500000 335.046628 -65.328722
6468.750000 25.196782 -87.803925
6500.000000 345.407099 -65.064201
6531.250000 560.851511 -60.853869
6562.500000 336.603266 -65.288460
6593.750000 223.174483 -68.857936
6625.000000 249.079509 -67.904067
6656.250000 297.154260 -66.371187
6687.500000 181.987912 -70.629976
6718.750000 116.096873 -74.534416
6750.000000 170.568346 -71.192858
6781.250000 146.123326 -72.536436
6812.500000 132.968229 -73.355869
6843.750000 281.001157 -66.856664
6875.000000 290.459027 -66.569129
6906.250000 276.416131 -66.999559
6937.500000 147.611401 -72.448429
6968.750000 419.839710 -63.369156
7000.000000 399.101335 -63.809163
7031.250000 547.378185 -61.065077
7062.500000 348.702513 -64.981725
7093.750000 712.499476 -58.775136
7125.000000 838.322741 -57.362602
7156.250000 820.081002 -57.553692
7187.500000 593.842313 -60.357404
7218.750000 733.725566 -58.520154
7250.000000 863.552462 -57.105052
7281.250000 1188.844899 -54.328323
7312.500000 619.974494 -59.983350
7343.750000 767.521314 -58.129018
7375.000000 1395.859695 -52.933991
7406.250000 1006.021809 -55.778679
7437.500000 719.628289 -58.688662
7468.750000 1004.234299 -55.794126
7500.000000 1557.691141 -51.981200
7531.250000 1353.661593 -53.200625
7562.500000 187.871538 -70.353607
7593.750000 660.473482 -59.433719
7625.000000 1408.254653 -52.857203
7656.250000 710.990215 -58.793554
7687.500000 331.943452 -65.409545
7718.750000 262.227733 -67.457254
7750.000000 653.395931 -59.527298
7781.250000 311.768584 -65.954180
7812.500000 63.797520 -79.734751
7843.750000 121.995817 -74.103928
7875.000000 211.375289 -69.329742
7906.250000 198.216071 -69.888049
7937.500000 299.843202 -66.292943
7968.750000 281.509939 -66.840952
8000.000000 510.223439 -61.675619

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

File diff suppressed because it is too large Load Diff

@ -0,0 +1,92 @@
set terminal pngcairo size 800,600 font "Arial,12"
# 1
set output 'kadai1.png'
set xlabel "Time [msec]"
set ylabel "Normalized Amplitude"
set xrange [0:30]
set yrange [-1:1]
set grid
plot 'kadai1.txt' using 1:2 with lines title "sample01.sw"
# 2 ()
set output 'kadai2_linear.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude"
set xrange [0:8000]
set autoscale y
set grid
plot 'kadai2_dft.txt' using 1:2 with lines title "DFT", \
'kadai2_fft.txt' using 1:2 with lines title "FFT"
# 2 (dB)
set output 'kadai2_db.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
plot 'kadai2_dft.txt' using 1:3 with lines title "DFT", \
'kadai2_fft.txt' using 1:3 with lines title "FFT"
# 3 ()
set output 'kadai3_linear.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude"
set xrange [0:8000]
set autoscale y
set grid
plot 'kadai2_fft.txt' using 1:2 with lines title "No Window", \
'kadai3_window.txt' using 1:2 with lines title "Hanning Window"
# 3 (dB)
set output 'kadai3_db.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
plot 'kadai2_fft.txt' using 1:3 with lines title "No Window", \
'kadai3_window.txt' using 1:3 with lines title "Hanning Window"
# 4 (dB - )
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
set output 'kadai4_a_db.png'
plot 'kadai4_a.txt' using 1:3 with lines title "/a/"
set output 'kadai4_i_db.png'
plot 'kadai4_i.txt' using 1:3 with lines title "/i/"
set output 'kadai4_u_db.png'
plot 'kadai4_u.txt' using 1:3 with lines title "/u/"
set output 'kadai4_e_db.png'
plot 'kadai4_e.txt' using 1:3 with lines title "/e/"
set output 'kadai4_o_db.png'
plot 'kadai4_o.txt' using 1:3 with lines title "/o/"
# 1 ()
set pm3d map
set xlabel "Time [sec]"
set ylabel "Frequency [Hz]"
set xrange [0:*]
set yrange [0:8000]
set zrange [-90:0]
set cbrange [-90:0]
set cblabel "Amplitude [dB]"
#
set palette defined (-90 "white", 0 "black")
set output 'hatten1_mono.png'
splot 'spectrogram.txt' using 1:2:3 notitle
# Jet
set palette rgbformulae 22,13,-31
set output 'hatten1_color.png'
splot 'spectrogram.txt' using 1:2:3 notitle

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

@ -0,0 +1,20 @@
<このフォルダの中身>
kadai.c
... 音声データ分析を一括で行うC言語プログラムソースコード
課題1〜4、発展課題1(各自の音声のスペクトログラム可視化)、および考察1のすべての処理を含む
plot.plt
... 分析結果のデータを可視化するための一括gnuplotスクリプト
課題1〜4のグラフ、および発展課題1のモノクロ・カラーのスペクトログラムの描画処理を含む
sample01.sw
... 分析対象の信号1(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
課題1~3において使用
j22330.sw
... レポート作成者本人の音声データ(標本化周波数 16kHz, 量子化ビット数 16bit, チャネル数 1ch, ヘッダなし, little-endian)
「あいうえお」の単独発声および連続発声を収録
課題4(各母音の分析)および発展課題1(スペクトログラムの可視化)において分析対象として使用
以上。

Binary file not shown.

Binary file not shown.

@ -0,0 +1,322 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
Complex getComplex(double r, double i) {
return (Complex){r, i};
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2.0 * M_PI * i / (N - 1));
x[i].r *= w;
x[i].i *= w;
}
}
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage;
int block2 = block >> 1;
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta);
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + block2]);
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
if (inverse) {
for (int i = 0; i < N; i++)
x[i] = divComplexByReal(x[i], N);
}
}
void dft(Complex *x, Complex *c, int N) {
for (int k = 0; k < N; k++) {
c[k] = getComplex(0.0, 0.0);
for (int n = 0; n < N; n++) {
double theta = -2.0 * M_PI * k * n / N;
Complex w = cexptheta(theta);
c[k] = addComplex(c[k], timeComplex(x[n], w));
}
}
}
/* 振幅スペクトルの最大値を0dBとしてテキストファイルに出力する関数 */
void outputSpectrum(const char *fname, Complex *x, int N, double fs) {
double max_amp = 0.0;
double *amps = malloc((N / 2 + 1) * sizeof(double));
// 全データの中で最大振幅を探す
for (int i = 0; i <= N / 2; i++) {
amps[i] = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
if (amps[i] > max_amp)
max_amp = amps[i];
}
FILE *fp = fopen(fname, "w");
if (!fp) {
free(amps);
return;
}
for (int i = 0; i <= N / 2; i++) {
double f = (double)i * fs / N;
// 最大振幅を基準(X_b)としてdB値を計算
double db = (amps[i] > 0 && max_amp > 0) ? 20.0 * log10(amps[i] / max_amp) : -100.0;
fprintf(fp, "%f %f %f\n", f, amps[i], db);
}
fclose(fp);
free(amps);
}
/* 複素数配列の平均パワーを求める関数 */
double calcAmpPower(Complex *x, int N) {
double amp, power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i].r * x[i].r + x[i].i * x[i].i;
power += amp;
}
return power / N;
}
int main(void) {
int N = LENGTH;
short input[LENGTH];
Complex x_dft[LENGTH], x_fft[LENGTH], c[LENGTH];
FILE *fp;
double fs = 16000.0;
printf("Processing Kadai 1...\n");
fp = fopen("sample01.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open sample01.sw\n");
return 1;
}
FILE *out1 = fopen("kadai1.txt", "w");
short val;
for (int i = 0; i < 480; i++) {
if (fread(&val, sizeof(short), 1, fp) != 1)
break;
double time_ms = (double)i / fs * 1000.0;
double norm_val = (double)val / 32768.0;
fprintf(out1, "%f %f\n", time_ms, norm_val);
}
fclose(out1);
fclose(fp);
printf("Processing Kadai 2...\n");
fp = fopen("sample01.sw", "rb");
fread(input, sizeof(short), N, fp);
fclose(fp);
for (int i = 0; i < N; i++) {
x_dft[i] = getComplex(input[i], 0);
x_fft[i] = getComplex(input[i], 0);
}
LARGE_INTEGER start, end, freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
dft(x_dft, c, N);
QueryPerformanceCounter(&end);
printf("Kadai 2: DFT Elapsed Time: %f s\n", (double)(end.QuadPart - start.QuadPart) / freq.QuadPart);
QueryPerformanceCounter(&start);
fft(x_fft, N, 0);
QueryPerformanceCounter(&end);
printf("Kadai 2: FFT Elapsed Time: %f s\n", (double)(end.QuadPart - start.QuadPart) / freq.QuadPart);
outputSpectrum("kadai2_dft.txt", c, N, fs);
outputSpectrum("kadai2_fft.txt", x_fft, N, fs);
printf("Processing Kadai 3...\n");
Complex x_win[LENGTH];
for (int i = 0; i < N; i++)
x_win[i] = getComplex(input[i], 0);
applyWindow(x_win, N);
fft(x_win, N, 0);
outputSpectrum("kadai3_window.txt", x_win, N, fs);
printf("Processing Kadai 4...\n");
typedef struct {
double time_sec;
const char *vowel;
} SeekTarget;
// 各母音の音声の開始時刻(秒)
SeekTarget targets[] = {
{0.361, "a"}, {0.969, "i"}, {1.415, "u"}, {1.936, "e"}, {2.431, "o"}
};
fp = fopen("j22330.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open j22330.sw\n");
return 1;
}
for (int t = 0; t < 5; t++) {
// 開始時刻からファイル上のバイト位置を計算 (16kHz, 16bit=2byte)
long start_byte = (long)(targets[t].time_sec * fs * 2);
fseek(fp, start_byte, SEEK_SET);
if (fread(input, sizeof(short), N, fp) != (size_t)N)
continue;
Complex x_k4[LENGTH];
for (int i = 0; i < N; i++)
x_k4[i] = getComplex(input[i], 0);
applyWindow(x_k4, N);
fft(x_k4, N, 0);
char fname[256];
sprintf(fname, "kadai4_%s.txt", targets[t].vowel);
outputSpectrum(fname, x_k4, N, fs);
}
fclose(fp);
printf("Processing Kosatsu 1...\n");
fp = fopen("sample01.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open sample01.sw\n");
return 1;
}
fread(input, sizeof(short), N, fp);
fclose(fp);
Complex x_power[LENGTH];
for (int i = 0; i < N; i++)
x_power[i] = getComplex(input[i], 0);
double beforePower, afterPower;
beforePower = calcAmpPower(x_power, N);
applyWindow(x_power, N);
afterPower = calcAmpPower(x_power, N);
printf("Kosatsu 1: BEFORE : %16f\n", beforePower);
printf("Kosatsu 1: AFTER : %16f\n", afterPower);
printf("Kosatsu 1: DIFF : %16f\n", beforePower - afterPower);
printf("Kosatsu 1: RATIO : %16f\n", afterPower / beforePower);
printf("Processing Hatten Kadai 1...\n");
fp = fopen("j22330.sw", "rb");
if (!fp) {
fprintf(stderr, "Cannot open j22330.sw\n");
return 1;
}
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
rewind(fp);
long total_samples = file_size / sizeof(short);
short *all_input = malloc(file_size);
if (!all_input) {
fprintf(stderr, "Memory allocation failed\n");
fclose(fp);
return 1;
}
fread(all_input, sizeof(short), total_samples, fp);
fclose(fp);
int shift = 160; // フレームをずらす間隔 (10ms)
double global_max = 0.0;
Complex x_hatten[LENGTH];
// 0dBの基準となる全体の最大振幅を探索
for (long i = 0; i <= total_samples - N; i += shift) {
for (int j = 0; j < N; j++) {
x_hatten[j] = getComplex(all_input[i + j], 0);
}
applyWindow(x_hatten, N);
fft(x_hatten, N, 0);
for (int j = 0; j <= N / 2; j++) {
double amp = sqrt(x_hatten[j].r * x_hatten[j].r + x_hatten[j].i * x_hatten[j].i);
if (amp > global_max) {
global_max = amp;
}
}
}
// 各フレームのFFTを実行し、最大振幅を基準としたdB値を出力
FILE *out_sp = fopen("spectrogram.txt", "w");
if (out_sp && global_max > 0) {
for (long i = 0; i <= total_samples - N; i += shift) {
double time_sec = (i + N / 2.0) / fs;
for (int j = 0; j < N; j++) {
x_hatten[j] = getComplex(all_input[i + j], 0);
}
applyWindow(x_hatten, N);
fft(x_hatten, N, 0);
for (int j = 0; j <= N / 2; j++) {
double f = (double)j * fs / N;
// 振幅の計算とdB変換 (-90dBで下限クリッピング)
double amp = sqrt(x_hatten[j].r * x_hatten[j].r + x_hatten[j].i * x_hatten[j].i);
double db = (amp > 0) ? 20.0 * log10(amp / global_max) : -100.0;
if (db < -90.0) db = -90.0;
fprintf(out_sp, "%f %f %f\n", time_sec, f, db);
}
fprintf(out_sp, "\n"); // gnuplotのpm3d(面グラフ)描画用に空行を挿入
}
fclose(out_sp);
}
free(all_input);
printf("All Kadai processed.\n");
return 0;
}

@ -0,0 +1,76 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
/* プロトタイプ宣言 */
double calcAmpPower(short *x, int N);
void applyWindow(short *x, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double beforePower, afterPower;
int i;
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
beforePower = calcAmpPower(input, N);
applyWindow(input, N);
afterPower = calcAmpPower(input, N);
printf("BEFORE : %16f\n", beforePower);
printf("AFTER : %16f\n", afterPower);
printf("DIFF : %16f\n", beforePower - afterPower);
printf("RATIO : %16f\n", afterPower / beforePower);
fclose(fp);
return 0;
}
/* short型配列の平均パワーを求める関数 */
double calcAmpPower(short *x, int N) {
double amp;
double power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i] * x[i];
power += amp;
}
return power / N;
}
/* 配列にハニング窓を適用 */
void applyWindow(short *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1)); // ハニング窓
x[i] *= w;
}
}

@ -0,0 +1,245 @@
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void genTwiddleTable(Complex *, int);
Complex calcTwiddlePower(Complex *, int, int);
void dft(Complex *, Complex *, int);
Complex getComplex(double r, double i);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
Complex powComplex(Complex, int);
int main(int argc, char *argv[]) {
int N = LENGTH; /* 信号長 */
double amp; /* 振幅 */
int i;
/* 時間計測用変数 */
LARGE_INTEGER start, end, freq;
double elapsedTime;
if (!QueryPerformanceFrequency(&freq)) {
fprintf(stderr, "High-resolution timer not supported.\n");
return 1;
}
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
/* N点DFT係数 */
Complex c[LENGTH];
/* DFT係数の初期化 */
for (i = 0; i < N; i++) {
c[i] = getComplex(0.0, 0.0);
}
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
/* 音声データを複素数型に変換 */
for (int i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
QueryPerformanceCounter(&start);
dft(x, c, N);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("DFT Elapsed time: %f seconds\n", elapsedTime);
QueryPerformanceCounter(&start);
fft(x, N, 0);
QueryPerformanceCounter(&end);
elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart;
printf("FFT Elapsed ti82me: %f seconds\n", elapsedTime);
// for(int i = 0; i < N; i++) {
// amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
// printf("%f\n", amp);
// }
fclose(fp);
return 0;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for (i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
/* 逆方向カウントアップ */
k = N >> 1;
while (k <= j && k > 0) { /* もしjのk番目のビットが 1 だったら */
j -= k; /* そのビットを 0 にする */
k >>= 1; /* 次のビットに移る */
}
j += k; /* 0 を見つけたら 1 にする */
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage; /* 現在のブロックのサイズ */
int block2 = block >> 1; /* ブロックサイズの半分 */
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta); /* 基本となる回転子 */
/* 各ブロックの計算 */
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
/* バタフライ演算の本体 */
Complex u = x[k + j]; /* X_0[k] */
Complex v =
timeComplex(w, x[k + j + block2]); /* W^k * X_1[k] */
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
/* 逆変換の場合、最後に N で割る */
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void dft(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for (k = 0; k < N; k++) {
/* シグマループ */
for (n = 0; n < N; n++) {
c[k] =
addComplex(c[k], timeComplex(x[n], calcTwiddlePower(W, k, n)));
}
}
}
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
Complex cexptheta(double theta) { return getComplex(cos(theta), sin(theta)); }
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if (pow == 0)
return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for (i = 0; i < p - 1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if (pow < 0)
ret.i = -ret.i;
return ret;
}

@ -0,0 +1,268 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
Complex getComplex(double r, double i);
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void genTwiddleTable(Complex*, int);
Complex calcTwiddlePower(Complex*, int, int);
void dft(Complex*, Complex*, int);
void applyWindow(Complex *x, int N);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
Complex powComplex(Complex, int);
void printComplex(Complex z);
void printTable(char *name, char index, Complex *z, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double amp;
int i;
FILE *fp = NULL;
/* file open */
if ( argc > 1 ) {
fp = fopen ( argv[1], "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (%s)\n", argv[1] );
exit ( 1 );
}
} else {
fprintf ( stderr, "Usage: %s input-filename\n", argv[0] );
exit ( 1 );
}
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
/* N点DFT係数 */
Complex c[LENGTH];
for(i = 0; i < N; i++) {
c[i] = getComplex(0.0, 0.0);
}
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
/* 音声データを複素数領域に変換 */
for(int i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
applyWindow(x, N);
fft(x, N, 0);
for(int i = 0; i < N; i++) {
amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
printf("%f\n", amp);
}
fclose(fp);
return 0;
}
/* 第一引数を実部,第二引数を虚部とする複素数を返す */
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
j = 0;
Complex temp;
for(i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
k = N >> 1;
while (k <= j && k > 0) {
j -= k;
k >>= 1;
}
j += k;
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int s = 1; (1 << s) <= N; s++) {
int m = 1 << s; // 現在のブロックのサイズ
int m2 = m >> 1; // ブロックサイズの半分
double theta = (inverse ? 2.0 : -2.0) * M_PI / m;
Complex wm = cexptheta(theta); // 基本となる回転因子
// 各ブロックの計算
for (int k = 0; k < N; k += m) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < m2; j++) {
// バタフライ演算の本体
Complex u = x[k + j];
Complex v = timeComplex(w, x[k + j + m2]);
x[k + j] = addComplex(u, v); // 上側
x[k + j + m2] = subComplex(u, v); // 下側
w = timeComplex(w, wm); // 回転因子を更新
}
}
}
// 3. 逆変換の場合、最後に n で割る
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 回転子W_Nの0乗からN-1乗を計算 */
void genTwiddleTable(Complex *W, int N) {
int i;
for (i = 0; i < N; i++) {
W[i] = getComplex(cos(i * 2.0 * M_PI / N), -sin(i * 2.0 * M_PI / N));
}
}
/* 回転子W_Nのn乗のk乗を計算 */
Complex calcTwiddlePower(Complex *W, int n, int k) {
return powComplex(W[n], k);
}
/* 離散フーリエ変換 */
void dft(Complex *x, Complex *c, int N) {
int k, n;
Complex W[LENGTH];
genTwiddleTable(W, N);
/* 信号長で反復 */
for(k = 0; k < N; k++) {
/* シグマループ */
for(n = 0; n < N; n++) {
c[k] = addComplex(
c[k],
timeComplex(
x[n],
calcTwiddlePower(
W, k, n
)
)
);
}
}
}
/* 配列にハニング窓を適用 */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1)); // ハニング窓
x[i].r *= w;
x[i].i *= w;
}
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}
/* 第一引数の第二引数乗を返す
* 1
*/
Complex powComplex(Complex z, int pow) {
if(pow == 0) return getComplex(1.0, 0.0);
int i;
int p = (pow > 0) ? pow : -pow;
Complex ret = z;
for(i = 0; i < p-1; i++) {
ret = timeComplex(ret, z);
}
/* |z|==1のとき,zの-1乗はzの共役複素数 */
if(pow < 0)
ret.i = -ret.i;
return ret;
}
/* 複素数出力 */
void printComplex(Complex z) {
if(z.i < 0) {
printf("%f-j%f\n", z.r, -z.i);
} else {
printf("%f+j%f\n", z.r, z.i);
}
}
/* 複素数テーブル出力 */
void printTable(char *name, char index, Complex *z, int N) {
int i;
printf("----- BEGIN %s TABLE -----\n", name);
for(i = 0; i < N; i++) {
printf("%c = %d : ", index, i);
printComplex(z[i]);
}
printf("----- END %s TABLE -----\n", name);
}

@ -0,0 +1,182 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長 ただし,2の整数乗 */
typedef struct {
double r; /* 実部 */
double i; /* 虚部 */
} Complex; /* 複素数 */
/* プロトタイプ宣言 */
Complex getComplex(double r, double i);
void bit_reversal(Complex *x, int N);
void fft(Complex *x, int N, int inverse);
void applyWindow(Complex *x, int N);
Complex cexptheta(double theta);
Complex addComplex(Complex a, Complex b);
Complex subComplex(Complex a, Complex b);
Complex timeComplex(Complex a, Complex b);
Complex divComplexByReal(Complex z, double div);
int main() {
int N = LENGTH; /* 信号長 */
double amp; /* 振幅 */
int i;
double start_sec = 2.454; /* 読み込む音声の開始位置 [秒] */
long fs = 16000; /* 標本化周波数 */
long bytes_per_sample = 2; /* 16bitなので2バイト */
long start_byte = (long)(start_sec * fs * bytes_per_sample); /* 指定時刻の開始位置バイト */
/* 入力信号配列 */
short input[LENGTH];
Complex x[LENGTH];
FILE *fp = fopen ( "j22330.sw", "rb" );
if ( fp == NULL ) {
fprintf ( stderr, "File open error (j22330.sw)\n" );
exit ( 1 );
}
/* 読み込む位置にファイルポインタを移動 */
fseek(fp, start_byte, SEEK_SET);
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (j22330.sw)\n");
fclose(fp);
exit(1);
}
/* 音声データを複素数型に変換 */
for(i = 0; i < N; i++) {
x[i] = getComplex(input[i], 0);
}
/* 窓関数の適用 */
applyWindow(x, N);
/* FFTの実行 */
fft(x, N, 0);
/* 振幅スペクトルの出力 */
for(i = 0; i < N; i++) {
amp = sqrt(x[i].r * x[i].r + x[i].i * x[i].i);
printf("%f\n", amp);
}
fclose(fp);
return 0;
}
/**
* @brief
*
* @param x
* @param N 2
*/
void bit_reversal(Complex *x, int N) {
int i, j, k;
Complex temp;
j = 0;
for(i = 0; i < N; i++) {
if (i < j) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
/* 逆方向カウントアップ */
k = N >> 1;
while (k <= j && k > 0) { /* もしjのk番目のビットが 1 だったら */
j -= k; /* そのビットを 0 にする */
k >>= 1; /* 次のビットに移る */
}
j += k; /* 0 を見つけたら 1 にする */
}
}
/**
* @brief
*
* @param x
* @param N 2
* @param inverse 0DFT1IDFT
*/
void fft(Complex *x, int N, int inverse) {
bit_reversal(x, N);
for (int stage = 1; (1 << stage) <= N; stage++) {
int block = 1 << stage; /* 現在のブロックのサイズ */
int block2 = block >> 1; /* ブロックサイズの半分 */
double theta = (inverse ? 2.0 : -2.0) * M_PI / block;
Complex wm = cexptheta(theta); /* 基本となる回転子 */
/* 各ブロックの計算 */
for (int k = 0; k < N; k += block) {
Complex w = getComplex(1.0, 0);
for (int j = 0; j < block2; j++) {
/* バタフライ演算の本体 */
Complex u = x[k + j]; /* X_0[k] */
Complex v = timeComplex(w, x[k + j + block2]); /* W^k * X_1[k] */
x[k + j] = addComplex(u, v);
x[k + j + block2] = subComplex(u, v);
w = timeComplex(w, wm);
}
}
}
/* 逆変換の場合、最後に N で割る */
if (inverse) {
for (int i = 0; i < N; i++) {
x[i] = divComplexByReal(x[i], N);
}
}
}
/* 配列にハニング窓を適用 */
void applyWindow(Complex *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1));
x[i].r *= w;
x[i].i *= w;
}
}
Complex getComplex(double r, double i) {
Complex c;
c.r = r;
c.i = i;
return c;
}
Complex cexptheta(double theta) {
return getComplex(cos(theta), sin(theta));
}
Complex addComplex(Complex a, Complex b) {
return getComplex(a.r + b.r, a.i + b.i);
}
Complex subComplex(Complex a, Complex b) {
return getComplex(a.r - b.r, a.i - b.i);
}
Complex timeComplex(Complex a, Complex b) {
return getComplex(a.r*b.r - a.i*b.i, a.r*b.i+a.i*b.r);
}
Complex divComplexByReal(Complex z, double div) {
return getComplex(z.r / div, z.i / div);
}

@ -0,0 +1,34 @@
<このフォルダの中身>
kadai1.plt
... 課題01(バイナリファイルの読み込み)で使用するgnuplotスクリプトファイル
分析対象の信号をプロットするために使用
data.plt
... 各課題で使用するgnuplotスクリプトファイル
output.txtにあるN行1列のデータを,横軸Frequency [kHz],縦軸Amplitude [-]でプロットするために使用
data-log.plt
... 各課題で使用するgnuplotスクリプトファイル
output.txtにあるN行1列のデータを,横軸Frequency [kHz],縦軸Amplitude [dB]でプロットするために使用
FFT.c
... 入力データに離散フーリエ変換を行うC言語プログラムファイル
課題02(DFTおよびFFTによる振幅スペクトルの計算と可視化)で使用
fft関数とdft関数が実装されている
課題02以降の課題はこのファイルを元にして作成した
FFT3.c
... 課題03(窓関数の導入)で使用するC言語プログラムファイル
 窓関数を適用できるようにしたもの
FFT4.c
... 課題04(各自の音声の周波数分析)で使用するC言語プログラムファイル
入力データファイルをj22330.swに限定した代わりに,開始時刻を指定できるようにしたもの
power.c
... 考察01(窓関数適用による振幅値の減少)で使用するC言語プログラムファイル
入力信号の平均パワーを計算できるようにしたもの
fft関数とdft関数は消去されている
以上。

@ -0,0 +1,16 @@
set term png
set output "output.png"
fs = 16000.0
N_fft = 512.0
set xlabel "Frequency [kHz]"
set ylabel "Amplitude [dB]"
stats "output.txt" using 1 nooutput
set xrange [0:8]
set grid
plot "output.txt" using ($0 * fs / N_fft / 1000):(20 * log10(($1 > 1e-10 ? $1 : 1e-10) / STATS_max)) \
with lines notitle

@ -0,0 +1,15 @@
set term png
set output "output.png"
fs = 16000.0
N_fft = 512.0
set xlabel "Frequency [kHz]"
set ylabel "Amplitude"
set xrange [0:8]
set grid
plot "output.txt" using ($0 * fs / N_fft / 1000):1 \
with lines notitle

Binary file not shown.

Binary file not shown.

@ -0,0 +1,18 @@
set term png
set output "kadai1.png"
fs = 16000.0
set xlabel "time [msec]"
set ylabel "amplitude"
set xrange [0:30]
set yrange [-1:1]
set size ratio 0.3
plot "sample01.sw" binary format="%int16" every ::::479 \
using ($0 * 1000.0 / fs):($1/32767.0) \
with lines notitle

@ -0,0 +1,76 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
/* プロトタイプ宣言 */
double calcAmpPower(short *x, int N);
void applyWindow(short *x, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double beforePower, afterPower;
int i;
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
beforePower = calcAmpPower(input, N);
applyWindow(input, N);
afterPower = calcAmpPower(input, N);
printf("BEFORE : %16f\n", beforePower);
printf("AFTER : %16f\n", afterPower);
printf("DIFF : %16f\n", beforePower - afterPower);
printf("RATIO : %16f\n", afterPower / beforePower);
fclose(fp);
return 0;
}
/* short型配列の平均パワーを求める関数 */
double calcAmpPower(short *x, int N) {
double amp;
double power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i] * x[i];
power += amp;
}
return power / N;
}
/* 配列にハニング窓を適用 */
void applyWindow(short *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2 * M_PI * i / (N - 1)); // ハニング窓
x[i] *= w;
}
}

@ -0,0 +1,92 @@
set terminal pngcairo size 800,600 font "Arial,12"
# 1
set output 'kadai1.png'
set xlabel "Time [msec]"
set ylabel "Normalized Amplitude"
set xrange [0:30]
set yrange [-1:1]
set grid
plot 'kadai1.txt' using 1:2 with lines title "sample01.sw"
# 2 ()
set output 'kadai2_linear.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude"
set xrange [0:8000]
set autoscale y
set grid
plot 'kadai2_dft.txt' using 1:2 with lines title "DFT", \
'kadai2_fft.txt' using 1:2 with lines title "FFT"
# 2 (dB)
set output 'kadai2_db.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
plot 'kadai2_dft.txt' using 1:3 with lines title "DFT", \
'kadai2_fft.txt' using 1:3 with lines title "FFT"
# 3 ()
set output 'kadai3_linear.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude"
set xrange [0:8000]
set autoscale y
set grid
plot 'kadai2_fft.txt' using 1:2 with lines title "No Window", \
'kadai3_window.txt' using 1:2 with lines title "Hanning Window"
# 3 (dB)
set output 'kadai3_db.png'
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
plot 'kadai2_fft.txt' using 1:3 with lines title "No Window", \
'kadai3_window.txt' using 1:3 with lines title "Hanning Window"
# 4 (dB - )
set xlabel "Frequency [Hz]"
set ylabel "Amplitude [dB]"
set xrange [0:8000]
set yrange [-90:0]
set grid
set output 'kadai4_a_db.png'
plot 'kadai4_a.txt' using 1:3 with lines title "/a/"
set output 'kadai4_i_db.png'
plot 'kadai4_i.txt' using 1:3 with lines title "/i/"
set output 'kadai4_u_db.png'
plot 'kadai4_u.txt' using 1:3 with lines title "/u/"
set output 'kadai4_e_db.png'
plot 'kadai4_e.txt' using 1:3 with lines title "/e/"
set output 'kadai4_o_db.png'
plot 'kadai4_o.txt' using 1:3 with lines title "/o/"
# 1 ()
set pm3d map
set xlabel "Time [sec]"
set ylabel "Frequency [Hz]"
set xrange [0:*]
set yrange [0:8000]
set zrange [-90:0]
set cbrange [-90:0]
set cblabel "Amplitude [dB]"
#
set palette defined (-90 "white", 0 "black")
set output 'hatten1_mono.png'
splot 'spectrogram.txt' using 1:2:3 notitle
# Jet
set palette rgbformulae 22,13,-31
set output 'hatten1_color.png'
splot 'spectrogram.txt' using 1:2:3 notitle

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,16 @@
set term png
set output "kadai2-1dft.png"
fs = 16000.0
N_fft = 512.0
set xlabel "Frequency [kHz]"
set ylabel "Amplitude"
set xrange [0:8]
set grid
plot "sample01_dft.txt" using ($0 * fs / N_fft / 1000):1 \
with lines notitle

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1,16 @@
set term png
set output "kadai4-o_log.png"
fs = 16000.0
N_fft = 512.0
set xlabel "Frequency [kHz]"
set ylabel "Amplitude [dB]"
stats "kadai4_o.txt" using 1 nooutput
set xrange [0:8]
set grid
plot "kadai4_o.txt" using ($0 * fs / N_fft / 1000):(20 * log10(($1 > 1e-10 ? $1 : 1e-10) / STATS_max)) \
with lines notitle

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,512 @@
46641.156978
37511.467194
62654.600973
53098.321814
48765.143716
82277.064365
49853.212548
76918.150629
96311.043099
72146.823225
90857.724845
84488.871404
79408.064830
66237.763662
36150.184987
234516.822105
243323.470675
79285.301485
9424.595409
76964.840300
70848.456098
65603.490118
96128.864503
49940.359620
80897.060405
73683.062857
86433.299676
103141.404090
115777.277100
138943.931192
347929.478414
453021.598933
401873.667045
115475.521300
114034.857272
77509.718568
72699.166425
47589.940824
50667.524401
34319.323353
4644.376742
47135.068944
70427.059204
11275.856384
110138.707616
157444.492522
363601.912045
264627.383969
123378.328308
58013.834745
58181.758728
50310.055886
101572.172794
37271.805985
72541.767998
102069.488762
23946.077276
83545.339979
89072.164684
63447.824363
124337.005337
146212.479978
207852.682908
280815.405845
75137.026011
63194.416580
20229.063725
38200.998624
76168.971551
74714.970306
88652.544249
126612.098456
50109.432215
88205.276032
66268.487101
88138.240295
252681.703504
793421.107466
742786.039720
307240.399498
16353.250648
95321.630748
45215.194092
32699.249456
35330.540543
24384.695875
49844.444157
23429.929913
23097.378326
31232.162858
38358.323848
50468.380771
152813.868808
345445.949089
273798.201420
40249.181211
84684.880187
82187.063771
52899.505125
60924.404175
66964.421290
76010.278968
82733.134787
129268.496409
106653.292093
94813.970750
152117.297007
131290.291911
513260.663701
503544.754483
165851.193550
7104.107430
70709.153441
90048.139890
33464.005057
71804.146811
86839.054349
8278.985799
80822.983457
47901.284344
56656.774513
79558.163302
17425.855924
253269.650353
554146.237729
396797.228499
40819.841167
73008.611948
110346.266618
31512.004197
68314.982356
47293.184769
26292.016086
46150.869613
18085.430946
49050.484831
74632.075920
28082.544757
85509.660850
69889.180349
198209.983089
101335.613416
80263.127013
35486.161176
46963.221133
58606.467016
40166.572083
30490.222489
59596.535087
23631.104051
26245.933598
29545.414113
58378.497097
16744.088612
322642.987002
509721.427648
421463.912778
138954.899663
100306.853240
69083.986504
135869.130106
80995.285819
115917.231996
87099.244104
18378.924696
24980.813373
69266.906024
116324.023671
74954.359172
128715.430792
188969.556456
356244.096170
147608.852998
50970.702692
33374.291232
27023.477839
22817.410587
65922.481919
74880.260147
61945.179593
122752.212665
86100.604072
96986.388411
131276.139661
73447.113194
117083.741277
62184.574642
84351.349434
21675.077428
38348.579097
13129.385433
56851.737450
47310.448047
24286.890353
53404.667670
18136.187083
18107.639471
26418.607952
59869.710737
74693.662865
210164.034275
694949.324609
879638.708344
418933.456624
71934.647191
87315.833777
77509.007672
52431.592699
61352.105954
15274.739811
16717.928487
5823.803756
37443.004874
40321.260538
32215.521611
35119.426911
214221.663224
439096.549983
382866.208489
73482.960823
73154.343047
63381.981537
21061.226030
41267.307717
34927.582593
51056.558294
82218.427936
24712.943128
83737.347433
42139.839954
111506.341464
193540.444913
506993.796503
538486.258767
330098.196856
53013.032644
71975.379071
9299.695768
34345.458241
20773.758563
56584.931754
8865.018778
68242.433170
31490.856965
64104.910834
63424.966546
38705.567973
99016.370333
77884.819800
34224.368060
45959.234193
36755.716922
57508.610070
6796.625978
37517.719812
24939.856735
5044.181465
24939.856735
37517.719812
6796.625978
57508.610070
36755.716922
45959.234193
34224.368060
77884.819800
99016.370333
38705.567973
63424.966546
64104.910834
31490.856965
68242.433170
8865.018778
56584.931754
20773.758563
34345.458241
9299.695768
71975.379071
53013.032644
330098.196856
538486.258767
506993.796503
193540.444913
111506.341464
42139.839954
83737.347433
24712.943128
82218.427936
51056.558294
34927.582593
41267.307717
21061.226030
63381.981537
73154.343047
73482.960823
382866.208489
439096.549983
214221.663224
35119.426911
32215.521611
40321.260538
37443.004874
5823.803756
16717.928487
15274.739811
61352.105954
52431.592699
77509.007672
87315.833777
71934.647191
418933.456624
879638.708344
694949.324609
210164.034275
74693.662865
59869.710737
26418.607952
18107.639471
18136.187083
53404.667670
24286.890353
47310.448047
56851.737450
13129.385433
38348.579097
21675.077428
84351.349434
62184.574642
117083.741277
73447.113194
131276.139661
96986.388411
86100.604072
122752.212665
61945.179593
74880.260147
65922.481919
22817.410587
27023.477839
33374.291232
50970.702692
147608.852998
356244.096170
188969.556456
128715.430792
74954.359172
116324.023671
69266.906024
24980.813373
18378.924696
87099.244104
115917.231996
80995.285819
135869.130106
69083.986504
100306.853240
138954.899663
421463.912778
509721.427648
322642.987002
16744.088612
58378.497097
29545.414113
26245.933598
23631.104051
59596.535087
30490.222489
40166.572083
58606.467016
46963.221133
35486.161176
80263.127013
101335.613416
198209.983089
69889.180349
85509.660850
28082.544757
74632.075920
49050.484831
18085.430946
46150.869613
26292.016086
47293.184769
68314.982356
31512.004197
110346.266618
73008.611948
40819.841167
396797.228499
554146.237729
253269.650353
17425.855924
79558.163302
56656.774513
47901.284344
80822.983457
8278.985799
86839.054349
71804.146811
33464.005057
90048.139890
70709.153441
7104.107430
165851.193550
503544.754483
513260.663701
131290.291911
152117.297007
94813.970750
106653.292093
129268.496409
82733.134787
76010.278968
66964.421290
60924.404175
52899.505125
82187.063771
84684.880187
40249.181211
273798.201420
345445.949089
152813.868808
50468.380771
38358.323848
31232.162858
23097.378326
23429.929913
49844.444157
24384.695875
35330.540543
32699.249456
45215.194092
95321.630748
16353.250648
307240.399498
742786.039720
793421.107466
252681.703504
88138.240295
66268.487101
88205.276032
50109.432215
126612.098456
88652.544249
74714.970306
76168.971551
38200.998624
20229.063725
63194.416580
75137.026011
280815.405845
207852.682908
146212.479978
124337.005337
63447.824363
89072.164684
83545.339979
23946.077276
102069.488762
72541.767998
37271.805985
101572.172794
50310.055886
58181.758728
58013.834745
123378.328308
264627.383969
363601.912044
157444.492522
110138.707616
11275.856384
70427.059204
47135.068944
4644.376742
34319.323353
50667.524401
47589.940824
72699.166425
77509.718568
114034.857272
115475.521300
401873.667045
453021.598933
347929.478414
138943.931192
115777.277100
103141.404090
86433.299676
73683.062857
80897.060405
49940.359620
96128.864503
65603.490118
70848.456098
76964.840300
9424.595409
79285.301485
243323.470675
234516.822105
36150.184987
66237.763662
79408.064830
84488.871404
90857.724845
72146.823225
96311.043099
76918.150629
49853.212548
82277.064365
48765.143716
53098.321814
62654.600973
37511.467194

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

@ -0,0 +1,512 @@
75688.353607
56655.957266
17217.569003
128827.277355
169687.424896
49240.859774
24702.961604
83311.542134
88239.335697
28949.430852
49410.644086
153350.004625
112805.333181
22344.951169
93032.547949
190888.813884
112714.776924
19128.291479
250097.707531
320729.519626
117508.955575
18061.716810
212173.103193
232568.723956
97677.360709
97974.728986
252853.295435
156575.885311
723.966517
136278.396466
226191.351622
119944.664061
96949.895697
332585.903795
348932.714168
99772.115936
5211.739915
37075.967725
41783.810028
11589.709840
10513.814596
26479.957824
19259.113828
4872.383925
12143.515884
21537.240390
10980.673351
1874.504865
13069.778091
15452.803482
5941.693411
1391.192625
7867.082805
7786.590886
2872.658783
2579.937920
7091.552764
5640.489987
1790.672146
5881.084343
9261.754829
4541.261918
455.850983
3402.048919
4565.725534
2569.605821
3396.060724
10701.162892
8336.660030
2903.271379
2992.276960
7507.296402
5032.753140
2201.539458
2440.890466
4825.228062
5395.422784
3005.852508
14336.569607
15470.926910
11403.109514
4620.346878
18522.556613
13326.940359
2526.696173
11374.309985
20693.033782
15633.573552
11689.598511
19805.773419
21127.479736
9481.219892
2991.374580
3463.676724
3343.018986
1758.812810
2072.122406
2309.942246
1265.742052
471.716619
535.440255
961.676852
889.511943
484.156454
1141.797533
1632.286750
1141.126483
210.670372
1370.545716
2075.417671
1974.799420
1985.023473
5785.873171
6851.397860
4623.464109
3767.365466
7205.426192
4395.893099
1905.867698
6578.518111
10858.446034
14749.919701
9161.005382
18154.613066
17768.505216
10615.989939
3845.303142
12323.162980
11289.240445
4927.623853
11791.661904
15072.034465
5691.983995
12760.606647
29816.358801
32248.580550
31372.115142
13105.551622
30754.224875
23047.260882
14426.494150
6076.611888
3698.810689
14564.603207
18651.062840
18557.277218
18125.492257
16282.956234
18744.168143
23207.190196
8853.992965
6155.317752
11035.258127
13917.158124
10960.345811
6579.252454
3659.236636
5934.890957
5108.168295
3178.361996
1351.096829
4683.428153
8003.058886
3192.706866
2864.971074
4878.521467
3148.079413
4415.799928
6969.063232
7113.224424
2736.315666
3487.558163
8401.615840
11514.843732
6453.349455
3123.348022
12024.741896
16415.173271
10105.317868
10571.458143
21995.316837
24274.550608
14965.727959
20811.166741
13528.647798
6513.580840
7209.140770
8611.258117
11455.637351
4352.062021
10927.611470
12532.637052
15995.007030
7621.837156
2893.047299
2266.988746
1921.975863
4171.331371
4010.490789
6854.003070
7333.142339
3885.027489
3850.870174
3923.401359
1289.489348
743.808789
952.617933
497.903269
1042.688582
4306.391499
6535.789225
5276.674320
1244.343515
951.099197
2749.871423
2381.093778
575.991497
2466.859157
3015.292720
1472.259910
479.343952
1556.874029
2166.824166
986.058232
1784.365621
3046.483138
2055.012528
236.259080
1205.872737
2121.944512
1252.549989
635.524890
1527.177899
1958.405882
800.710407
522.011591
1526.901127
1441.811282
181.371328
463.542956
1260.642663
1281.817146
234.883699
882.744625
1252.619173
381.848909
679.135418
1031.029735
1877.454504
896.041715
391.802296
1177.952891
1048.761572
108.871157
367.754405
436.129829
597.770244
436.129829
367.754405
108.871157
1048.761572
1177.952891
391.802296
896.041715
1877.454504
1031.029735
679.135418
381.848909
1252.619173
882.744625
234.883699
1281.817146
1260.642663
463.542956
181.371328
1441.811282
1526.901127
522.011591
800.710407
1958.405882
1527.177899
635.524890
1252.549989
2121.944512
1205.872737
236.259080
2055.012528
3046.483138
1784.365621
986.058232
2166.824166
1556.874029
479.343952
1472.259910
3015.292720
2466.859157
575.991497
2381.093778
2749.871423
951.099197
1244.343515
5276.674320
6535.789225
4306.391499
1042.688582
497.903269
952.617933
743.808789
1289.489348
3923.401359
3850.870174
3885.027489
7333.142339
6854.003070
4010.490789
4171.331371
1921.975863
2266.988746
2893.047299
7621.837156
15995.007030
12532.637052
10927.611470
4352.062021
11455.637351
8611.258117
7209.140770
6513.580840
13528.647798
20811.166741
14965.727959
24274.550608
21995.316837
10571.458143
10105.317868
16415.173271
12024.741896
3123.348022
6453.349455
11514.843732
8401.615840
3487.558163
2736.315666
7113.224424
6969.063232
4415.799928
3148.079413
4878.521467
2864.971074
3192.706866
8003.058886
4683.428153
1351.096829
3178.361996
5108.168295
5934.890957
3659.236636
6579.252454
10960.345811
13917.158124
11035.258127
6155.317752
8853.992965
23207.190196
18744.168143
16282.956234
18125.492257
18557.277218
18651.062840
14564.603207
3698.810689
6076.611888
14426.494150
23047.260882
30754.224875
13105.551622
31372.115142
32248.580550
29816.358801
12760.606647
5691.983995
15072.034465
11791.661904
4927.623853
11289.240445
12323.162980
3845.303142
10615.989939
17768.505216
18154.613066
9161.005382
14749.919701
10858.446034
6578.518111
1905.867698
4395.893099
7205.426192
3767.365466
4623.464109
6851.397860
5785.873171
1985.023473
1974.799420
2075.417671
1370.545716
210.670372
1141.126483
1632.286750
1141.797533
484.156454
889.511943
961.676852
535.440255
471.716619
1265.742052
2309.942246
2072.122406
1758.812810
3343.018986
3463.676724
2991.374580
9481.219892
21127.479736
19805.773419
11689.598511
15633.573552
20693.033782
11374.309985
2526.696173
13326.940359
18522.556613
4620.346878
11403.109514
15470.926910
14336.569607
3005.852508
5395.422784
4825.228062
2440.890466
2201.539458
5032.753140
7507.296402
2992.276960
2903.271379
8336.660030
10701.162892
3396.060724
2569.605821
4565.725534
3402.048919
455.850983
4541.261918
9261.754829
5881.084343
1790.672146
5640.489987
7091.552764
2579.937920
2872.658783
7786.590886
7867.082805
1391.192625
5941.693411
15452.803482
13069.778091
1874.504865
10980.673351
21537.240390
12143.515884
4872.383925
19259.113828
26479.957824
10513.814596
11589.709840
41783.810028
37075.967725
5211.739915
99772.115936
348932.714168
332585.903795
96949.895697
119944.664061
226191.351622
136278.396466
723.966517
156575.885311
252853.295435
97974.728986
97677.360709
232568.723956
212173.103193
18061.716810
117508.955575
320729.519626
250097.707531
19128.291479
112714.776924
190888.813884
93032.547949
22344.951169
112805.333181
153350.004625
49410.644086
28949.430852
88239.335697
83311.542134
24702.961604
49240.859774
169687.424896
128827.277355
17217.569003
56655.957266

@ -0,0 +1,512 @@
30466.318503
6646.075605
10707.000148
114166.014867
166076.766704
57053.584253
26438.266564
107932.387584
93895.184241
14231.747647
139471.953998
332641.997126
204214.550072
28504.703552
462514.872961
775049.751193
324887.544946
39939.098859
84735.072031
92066.423286
18065.675827
15783.771599
32055.599557
21713.291692
2178.825457
20063.151480
35501.553370
18641.482085
1646.456022
11465.033997
15359.513792
4407.669486
4522.822203
13680.207723
12765.320284
1646.781761
5627.855420
10980.881979
5935.365993
1846.782593
5270.034966
8333.000096
2462.202159
4547.548367
16276.566448
17271.337641
3418.117323
12175.650211
29090.197450
22050.006972
2476.165062
17168.031529
30897.730938
12377.591927
12066.534456
52944.482117
62827.652427
11357.101984
47603.047804
141861.505287
128751.388733
12314.990405
72462.474643
119086.543680
66880.054230
17698.650654
87822.455998
132431.858122
53551.761450
16406.343353
36006.280439
39876.525351
7876.914726
10827.144242
19953.180806
9324.254025
10169.342994
34768.106463
59589.915560
22329.769926
26424.641808
60207.926556
66809.954225
20256.307229
11168.389040
60095.186616
49006.666401
27595.238136
57607.616274
93823.651097
58195.723157
7548.950416
23956.553604
31950.161643
17082.755819
10700.457176
34032.509945
36262.816415
5307.510588
16050.330533
34190.619653
25056.022878
6084.712584
33145.694638
56628.714798
25939.732417
15685.928492
20626.743451
19840.406231
3530.497523
9160.840976
16567.107988
14292.575264
1888.388610
6069.505501
6756.260398
4121.046404
888.535587
552.578315
1264.354868
301.465603
791.755399
1391.486077
1273.019261
109.539505
415.165512
312.207529
243.714867
91.421764
277.622405
534.204687
179.462896
181.109361
1459.843028
1940.138598
450.355700
2463.533382
4159.321157
3442.432852
483.260729
1755.340351
1673.668394
1830.478645
2905.215419
4740.819772
5264.196072
2188.792309
794.656931
4774.283435
8099.276407
3670.664961
3067.294712
9720.363105
8325.205390
4865.801787
8729.279079
8270.322971
5174.004843
731.115427
3973.487374
2479.483218
3560.096960
5936.712907
7209.035203
5120.341596
601.561135
3443.193705
8962.946272
6673.457189
1719.308149
6451.932887
10068.905068
1807.894803
5231.289686
7613.678620
6214.389012
5705.116254
14264.622377
21990.942720
12625.747144
7855.171349
11376.236049
13954.094884
11180.649377
7883.546761
1944.255893
4496.475656
3700.270929
3207.459582
4500.785989
5136.359184
1852.045889
1558.362332
820.359471
344.274596
1002.414773
442.861079
526.346336
272.821411
23.340152
116.802958
248.068830
132.293694
59.435991
20.160995
44.302650
62.685066
72.064685
171.692599
139.317072
438.181335
380.096465
378.382614
439.682817
428.932150
537.193511
556.786774
766.683359
1757.086229
2635.626772
1653.176491
1023.640470
3776.583168
6996.099084
3164.893203
2594.320248
5101.958557
4376.748276
1197.745347
2334.648763
2327.924785
1779.632313
741.887512
2470.521941
3061.107420
1727.510987
2418.538397
3787.934481
3520.399497
1790.067867
991.035491
1463.721222
337.215533
1155.335617
2486.116689
2163.016363
1163.133609
865.340327
1097.968954
850.006138
742.375296
281.615394
1831.331260
1970.027635
319.882146
356.783871
179.586634
356.783871
319.882146
1970.027635
1831.331260
281.615394
742.375296
850.006138
1097.968954
865.340327
1163.133609
2163.016363
2486.116689
1155.335617
337.215533
1463.721222
991.035491
1790.067867
3520.399497
3787.934481
2418.538397
1727.510987
3061.107420
2470.521941
741.887512
1779.632313
2327.924785
2334.648763
1197.745347
4376.748276
5101.958557
2594.320248
3164.893203
6996.099084
3776.583168
1023.640470
1653.176491
2635.626772
1757.086229
766.683359
556.786774
537.193511
428.932150
439.682817
378.382614
380.096465
438.181335
139.317072
171.692599
72.064685
62.685066
44.302650
20.160995
59.435991
132.293694
248.068830
116.802958
23.340152
272.821411
526.346336
442.861079
1002.414773
344.274596
820.359471
1558.362332
1852.045889
5136.359184
4500.785989
3207.459582
3700.270929
4496.475656
1944.255893
7883.546761
11180.649377
13954.094884
11376.236049
7855.171349
12625.747144
21990.942720
14264.622377
5705.116254
6214.389012
7613.678620
5231.289686
1807.894803
10068.905068
6451.932887
1719.308149
6673.457189
8962.946272
3443.193705
601.561135
5120.341596
7209.035203
5936.712907
3560.096960
2479.483218
3973.487374
731.115427
5174.004843
8270.322971
8729.279079
4865.801787
8325.205390
9720.363105
3067.294712
3670.664961
8099.276407
4774.283435
794.656931
2188.792309
5264.196072
4740.819772
2905.215419
1830.478645
1673.668394
1755.340351
483.260729
3442.432852
4159.321157
2463.533382
450.355700
1940.138598
1459.843028
181.109361
179.462896
534.204687
277.622405
91.421764
243.714867
312.207529
415.165512
109.539505
1273.019261
1391.486077
791.755399
301.465603
1264.354868
552.578315
888.535587
4121.046404
6756.260398
6069.505501
1888.388610
14292.575264
16567.107988
9160.840976
3530.497523
19840.406231
20626.743451
15685.928492
25939.732417
56628.714798
33145.694638
6084.712584
25056.022878
34190.619653
16050.330533
5307.510588
36262.816415
34032.509945
10700.457176
17082.755819
31950.161643
23956.553604
7548.950416
58195.723157
93823.651097
57607.616274
27595.238136
49006.666401
60095.186616
11168.389040
20256.307229
66809.954225
60207.926556
26424.641808
22329.769926
59589.915560
34768.106463
10169.342994
9324.254025
19953.180806
10827.144242
7876.914726
39876.525351
36006.280439
16406.343353
53551.761450
132431.858122
87822.455998
17698.650654
66880.054230
119086.543680
72462.474643
12314.990405
128751.388733
141861.505287
47603.047804
11357.101984
62827.652427
52944.482117
12066.534456
12377.591927
30897.730938
17168.031529
2476.165062
22050.006972
29090.197450
12175.650211
3418.117323
17271.337641
16276.566448
4547.548367
2462.202159
8333.000096
5270.034966
1846.782593
5935.365993
10980.881979
5627.855420
1646.781761
12765.320284
13680.207723
4522.822203
4407.669486
15359.513792
11465.033997
1646.456022
18641.482085
35501.553370
20063.151480
2178.825457
21713.291692
32055.599557
15783.771599
18065.675827
92066.423286
84735.072031
39939.098859
324887.544946
775049.751193
462514.872961
28504.703552
204214.550072
332641.997126
139471.953998
14231.747647
93895.184241
107932.387584
26438.266564
57053.584253
166076.766704
114166.014867
10707.000148
6646.075605

@ -0,0 +1,512 @@
58445.516560
34937.692138
11676.410041
130568.874111
211524.294951
75527.103255
22234.206600
249480.331238
315203.867295
95138.888656
47382.831590
193939.344779
191244.255486
29903.495525
18711.630152
96530.259132
78149.742684
10470.927311
7161.591584
26717.070199
16775.773977
1356.262701
4394.129851
10009.873898
4614.300229
836.723356
4106.823861
5991.892314
2462.361463
318.869997
1181.515877
1436.024371
462.457607
449.988678
2017.769261
1990.935517
205.737370
984.526666
3974.585865
3364.680895
442.575645
887.514560
2326.086503
1719.626568
195.768649
2216.818919
4523.238172
2135.527586
163.488751
2448.512163
4467.722060
1818.718052
1086.149488
7355.826454
9251.963720
2195.325016
1318.897700
9183.721095
9524.859734
2331.535239
2957.594839
10700.081268
9207.709096
1019.764774
10486.506498
28721.831205
17129.563410
8942.931858
29009.258122
53512.530243
30984.259898
2045.148932
8317.850010
13956.796599
6110.025281
1468.267623
8432.666246
10808.108947
2975.191948
2220.994959
12324.500933
13628.621312
3687.406280
463.070998
2168.994255
2520.372460
800.539287
6216.207083
15275.367216
9602.446426
653.854389
6552.205096
13614.518407
6673.591468
831.451359
18017.662500
33023.829392
13484.495216
3573.527076
46698.828122
65575.384582
16391.321104
17222.396610
50294.905073
50708.166495
10661.438258
3010.172098
13456.096594
10785.706532
3437.444316
9161.643486
27346.690856
18768.361005
5180.073119
9342.202385
15677.667940
7326.237083
827.747806
1025.272504
2678.367106
1066.326377
402.004331
1168.635586
1823.154279
742.745230
331.417613
788.735551
841.550679
346.348256
502.315825
1722.615545
1578.666891
255.199694
1111.423172
3137.340502
2230.013107
746.164273
3213.126797
7343.854432
4447.464629
507.235780
1710.943865
2191.598137
3024.285889
5030.435137
5641.975165
10505.904269
6875.078644
7938.929245
13328.243559
13346.364744
4890.048408
9013.588795
28803.563068
25196.694593
2194.504472
6372.213685
28218.404172
17632.153530
6139.749310
6881.505929
34798.275609
25249.916618
1844.319871
10483.278323
18098.300110
2453.870087
10057.851280
24405.719312
28054.791604
11333.630250
8493.550542
35728.538011
38872.465499
6776.804495
4538.109883
30898.811852
24933.889653
5446.950156
7069.894175
22310.608953
17116.163718
2079.047707
5726.365501
8434.353098
6373.695871
2270.708779
1227.726568
4116.782420
4757.355550
4273.867735
13015.070256
16345.046754
3682.503942
2693.736216
973.420806
899.818656
888.555038
871.628936
3812.559320
4577.920813
1009.413221
317.632063
356.087162
319.468598
357.587762
328.100311
993.592492
823.797811
338.666903
881.987117
1167.917688
406.767995
276.029185
460.147545
871.815462
418.344023
124.558289
645.870278
932.131306
341.018771
103.717688
779.113250
957.748472
145.993168
306.308704
959.586798
892.393284
472.160632
1315.962206
2937.092909
1802.122260
1064.486553
6387.532401
11269.545026
6088.843753
1115.358497
4197.599733
6054.622956
1477.795426
2038.840509
2917.397309
2937.187263
1431.464485
744.297625
1863.738614
1507.334321
553.268698
873.945563
2108.672815
1803.000208
848.475194
1450.397433
2488.777639
1632.737902
76.064710
225.203129
76.064710
1632.737902
2488.777639
1450.397433
848.475194
1803.000208
2108.672815
873.945563
553.268698
1507.334321
1863.738614
744.297625
1431.464485
2937.187263
2917.397309
2038.840509
1477.795426
6054.622956
4197.599733
1115.358497
6088.843753
11269.545026
6387.532401
1064.486553
1802.122260
2937.092909
1315.962206
472.160632
892.393284
959.586798
306.308704
145.993168
957.748472
779.113250
103.717688
341.018771
932.131306
645.870278
124.558289
418.344023
871.815462
460.147545
276.029185
406.767995
1167.917688
881.987117
338.666903
823.797811
993.592492
328.100311
357.587762
319.468598
356.087162
317.632063
1009.413221
4577.920813
3812.559320
871.628936
888.555038
899.818656
973.420806
2693.736216
3682.503942
16345.046754
13015.070256
4273.867735
4757.355550
4116.782420
1227.726568
2270.708779
6373.695871
8434.353098
5726.365501
2079.047707
17116.163718
22310.608953
7069.894175
5446.950156
24933.889653
30898.811852
4538.109883
6776.804495
38872.465499
35728.538011
8493.550542
11333.630250
28054.791604
24405.719312
10057.851280
2453.870087
18098.300110
10483.278323
1844.319871
25249.916618
34798.275609
6881.505929
6139.749310
17632.153530
28218.404172
6372.213685
2194.504472
25196.694593
28803.563068
9013.588795
4890.048408
13346.364744
13328.243559
7938.929245
6875.078644
10505.904269
5641.975165
5030.435137
3024.285889
2191.598137
1710.943865
507.235780
4447.464629
7343.854432
3213.126797
746.164273
2230.013107
3137.340502
1111.423172
255.199694
1578.666891
1722.615545
502.315825
346.348256
841.550679
788.735551
331.417613
742.745230
1823.154279
1168.635586
402.004331
1066.326377
2678.367106
1025.272504
827.747806
7326.237083
15677.667940
9342.202385
5180.073119
18768.361005
27346.690856
9161.643486
3437.444316
10785.706532
13456.096594
3010.172098
10661.438258
50708.166495
50294.905073
17222.396610
16391.321104
65575.384582
46698.828122
3573.527076
13484.495216
33023.829392
18017.662500
831.451359
6673.591468
13614.518407
6552.205096
653.854389
9602.446426
15275.367216
6216.207083
800.539287
2520.372460
2168.994255
463.070998
3687.406280
13628.621312
12324.500933
2220.994959
2975.191948
10808.108947
8432.666246
1468.267623
6110.025281
13956.796599
8317.850010
2045.148932
30984.259898
53512.530243
29009.258122
8942.931858
17129.563410
28721.831205
10486.506498
1019.764774
9207.709096
10700.081268
2957.594839
2331.535239
9524.859734
9183.721095
1318.897700
2195.325016
9251.963720
7355.826454
1086.149488
1818.718052
4467.722060
2448.512163
163.488751
2135.527586
4523.238172
2216.818919
195.768649
1719.626568
2326.086503
887.514560
442.575645
3364.680895
3974.585865
984.526666
205.737370
1990.935517
2017.769261
449.988678
462.457607
1436.024371
1181.515877
318.869997
2462.361463
5991.892314
4106.823861
836.723356
4614.300229
10009.873898
4394.129851
1356.262701
16775.773977
26717.070199
7161.591584
10470.927311
78149.742684
96530.259132
18711.630152
29903.495525
191244.255486
193939.344779
47382.831590
95138.888656
315203.867295
249480.331238
22234.206600
75527.103255
211524.294951
130568.874111
11676.410041
34937.692138

@ -0,0 +1,512 @@
6101.964605
23070.344395
9945.434889
135147.073438
176888.010627
49128.086027
16712.237862
103618.553666
94074.415982
6694.629284
152989.054710
364297.968764
214412.178347
43603.174711
422510.695457
626110.058250
229972.557009
23768.131921
127424.144160
129449.046011
22843.365459
44070.713323
116859.344175
80334.132435
3693.597957
47686.678969
77095.535492
33506.187093
537.153266
13776.671787
15860.671837
3199.786833
4662.871077
11067.643220
9114.650914
1303.415201
2797.507139
6338.030977
3228.215846
752.426611
3765.419470
5580.735799
1614.945106
1739.937275
6478.408236
5928.037176
819.262445
1894.116656
4972.485155
2918.596590
928.485733
2387.839849
3586.372584
1495.761360
333.509550
1632.553463
1870.316806
421.091418
1072.091480
2921.508653
2158.618092
264.163698
933.483503
1820.529038
739.399239
451.707683
2464.833863
3093.034141
619.999778
702.829088
2147.626021
1762.115239
267.152246
491.452697
1100.896181
601.928632
1364.268421
9275.577787
12700.340375
2687.605627
7330.737510
14898.745247
11881.137098
1373.031398
2158.682707
7795.509703
3848.127653
3097.919485
11089.154876
16642.027468
7020.773933
1045.795665
1538.692896
1867.367866
506.575914
521.913483
1351.777315
990.327635
118.492720
37.324700
37.848702
60.155869
40.660194
67.222852
62.608687
42.894196
18.825729
64.074211
38.230333
49.541854
68.695084
208.423670
106.240068
87.834516
180.218751
198.855140
72.506710
49.033792
135.578133
138.554698
79.931892
257.022164
573.974785
369.403386
212.660360
695.229028
1053.325372
265.997801
448.701432
1144.571858
1239.270511
469.057377
755.695495
2437.648132
1524.501639
914.444495
1922.849662
2566.716840
1419.420628
829.304163
169.877668
571.762867
1512.404764
1274.396090
2743.059376
2235.902652
761.373074
1275.869170
1419.881390
643.966258
182.922693
738.220856
1134.456273
427.993233
1000.588444
1035.446838
885.928867
497.332561
467.423662
646.772249
328.385587
453.832412
458.695916
833.220979
495.764396
589.697587
1121.878083
1128.164876
198.639103
66.083403
731.973336
487.550311
916.852660
1217.227683
1206.100185
799.672750
1259.761659
2606.398455
2973.911906
1669.922977
4304.426840
7560.836425
5853.753903
757.409339
816.145429
648.898877
138.444784
675.839421
1379.477110
1249.015837
1229.606559
1607.284196
1906.292139
1849.121307
714.171334
668.813140
1025.329303
450.216542
193.846786
602.633564
860.942287
726.256616
539.354069
463.049562
579.857773
118.294338
183.778882
171.786520
191.444004
251.618981
320.556010
262.300837
357.133324
389.451519
142.365888
229.791449
254.240957
277.009133
37.817430
250.343055
318.249296
483.146664
241.819670
262.538961
584.838760
480.602548
285.139626
405.698964
529.131017
443.058265
343.649313
195.241355
205.349264
270.377016
146.883227
92.383917
247.980241
292.387835
142.832016
109.271061
165.934375
133.764311
53.086575
98.818261
161.864952
147.822231
149.821322
292.306010
285.444070
26.917086
29.408294
198.346536
126.497949
211.547018
141.934727
382.093925
78.469119
382.093925
141.934727
211.547018
126.497949
198.346536
29.408294
26.917086
285.444070
292.306010
149.821322
147.822231
161.864952
98.818261
53.086575
133.764311
165.934375
109.271061
142.832016
292.387835
247.980241
92.383917
146.883227
270.377016
205.349264
195.241355
343.649313
443.058265
529.131017
405.698964
285.139626
480.602548
584.838760
262.538961
241.819670
483.146664
318.249296
250.343055
37.817430
277.009133
254.240957
229.791449
142.365888
389.451519
357.133324
262.300837
320.556010
251.618981
191.444004
171.786520
183.778882
118.294338
579.857773
463.049562
539.354069
726.256616
860.942287
602.633564
193.846786
450.216542
1025.329303
668.813140
714.171334
1849.121307
1906.292139
1607.284196
1229.606559
1249.015837
1379.477110
675.839421
138.444784
648.898877
816.145429
757.409339
5853.753903
7560.836425
4304.426840
1669.922977
2973.911906
2606.398455
1259.761659
799.672750
1206.100185
1217.227683
916.852660
487.550311
731.973336
66.083403
198.639103
1128.164876
1121.878083
589.697587
495.764396
833.220979
458.695916
453.832412
328.385587
646.772249
467.423662
497.332561
885.928867
1035.446838
1000.588444
427.993233
1134.456273
738.220856
182.922693
643.966258
1419.881390
1275.869170
761.373074
2235.902652
2743.059376
1274.396090
1512.404764
571.762867
169.877668
829.304163
1419.420628
2566.716840
1922.849662
914.444495
1524.501639
2437.648132
755.695495
469.057377
1239.270511
1144.571858
448.701432
265.997801
1053.325372
695.229028
212.660360
369.403386
573.974785
257.022164
79.931892
138.554698
135.578133
49.033792
72.506710
198.855140
180.218751
87.834516
106.240068
208.423670
68.695084
49.541854
38.230333
64.074211
18.825729
42.894196
62.608687
67.222852
40.660194
60.155869
37.848702
37.324700
118.492720
990.327635
1351.777315
521.913483
506.575914
1867.367866
1538.692896
1045.795665
7020.773933
16642.027468
11089.154876
3097.919485
3848.127653
7795.509703
2158.682707
1373.031398
11881.137098
14898.745247
7330.737510
2687.605627
12700.340375
9275.577787
1364.268421
601.928632
1100.896181
491.452697
267.152246
1762.115239
2147.626021
702.829088
619.999778
3093.034141
2464.833863
451.707683
739.399239
1820.529038
933.483503
264.163698
2158.618092
2921.508653
1072.091480
421.091418
1870.316806
1632.553463
333.509550
1495.761360
3586.372584
2387.839849
928.485733
2918.596590
4972.485155
1894.116656
819.262445
5928.037176
6478.408236
1739.937275
1614.945106
5580.735799
3765.419470
752.426611
3228.215846
6338.030977
2797.507139
1303.415201
9114.650914
11067.643220
4662.871077
3199.786833
15860.671837
13776.671787
537.153266
33506.187093
77095.535492
47686.678969
3693.597957
80334.132435
116859.344175
44070.713323
22843.365459
129449.046011
127424.144160
23768.131921
229972.557009
626110.058250
422510.695457
43603.174711
214412.178347
364297.968764
152989.054710
6694.629284
94074.415982
103618.553666
16712.237862
49128.086027
176888.010627
135147.073438
9945.434889
23070.344395

@ -0,0 +1,512 @@
15084.279446
9231.216723
6979.400544
139823.858600
224766.331147
97037.836652
20541.013632
202280.618959
299364.596902
96095.486191
68301.358869
494398.655753
589810.463903
160262.294293
14820.844991
116340.511468
114225.254099
27241.595799
10469.122752
34713.636216
32316.502973
4989.491047
6459.991858
17571.189057
13396.310069
1232.940761
1514.823949
3520.158367
2045.662095
522.026920
4474.431404
8760.859958
4537.246040
869.641591
9847.318473
18042.526393
8827.917676
3329.020035
26159.273276
38019.211781
13884.380447
3657.272812
56087.063497
82338.646016
32690.873082
2382.337631
22910.194585
24978.458262
5607.252047
5012.716745
16377.880039
14854.433268
4212.093016
4116.974462
15787.031123
12666.127960
2085.171808
8318.022470
19249.283983
12554.466771
1078.194445
6134.461689
13616.845331
7995.679948
1815.241933
31091.473788
53105.546535
23862.632429
1494.922556
1688.622805
5382.561455
2527.558923
662.848124
1662.461878
1495.975661
284.190214
625.689884
2355.961530
2617.929932
577.353273
203.213192
1364.980829
1417.214780
349.028063
514.126439
1884.641017
1656.901838
382.872802
981.820744
3373.805386
2380.999194
377.653547
724.583667
1889.449001
1250.208659
436.179648
2594.513953
5616.741208
2899.287574
909.137978
5403.208023
8142.307593
3142.026047
187.902757
1971.518880
2626.298659
1010.747769
23.829319
374.414868
450.279904
171.397232
110.426866
459.125426
488.602445
139.927903
47.723975
281.717388
228.802354
20.319832
58.887399
78.582227
93.143878
46.491930
67.180587
138.987133
85.021338
8.847374
89.681899
185.324652
113.634853
42.065243
390.367587
616.689114
272.583216
126.186865
1030.961857
1414.023394
490.030504
143.902438
407.330054
427.699973
187.247507
526.253609
1947.751767
1756.314071
434.565230
987.814890
3140.012594
2458.718160
583.796682
2384.923653
5519.344518
3944.225360
1337.753013
1417.125765
1939.579691
1029.128604
164.875652
854.911153
1548.694497
682.373248
112.751993
1581.512129
2540.709125
1163.458684
188.165329
1891.449097
2918.102734
1395.806497
450.359429
3835.215903
5166.117698
1592.694196
908.967256
2213.602171
2880.759470
299.136589
737.044905
1803.363834
1829.334042
766.223052
828.256964
2156.474051
1380.466216
299.678152
799.967777
1786.632568
999.835556
574.683322
2105.583275
3567.302891
1988.882100
490.697719
1719.109276
1764.979712
327.703739
887.707147
1868.354986
2062.409204
839.199979
107.848157
558.873744
688.799570
348.647865
124.382338
304.659162
357.449188
171.536961
244.403122
539.398636
436.531463
112.357260
217.199212
467.981200
319.627346
93.204537
36.578337
107.920589
82.707677
15.124462
209.863001
412.273972
249.714397
128.470283
452.895327
801.113173
357.187646
81.258225
765.326112
1297.352186
686.818862
48.645226
931.568870
1202.972565
481.040202
386.071022
1863.239536
1927.175895
739.008182
308.818934
1742.666343
1486.537761
882.459800
473.493159
982.137500
823.030385
566.098645
345.827286
759.613213
514.260489
170.533978
138.407307
249.521325
155.544820
96.824176
189.549092
298.311675
189.549092
96.824176
155.544820
249.521325
138.407307
170.533978
514.260489
759.613213
345.827286
566.098645
823.030385
982.137500
473.493159
882.459800
1486.537761
1742.666343
308.818934
739.008182
1927.175895
1863.239536
386.071022
481.040202
1202.972565
931.568870
48.645226
686.818862
1297.352186
765.326112
81.258225
357.187646
801.113173
452.895327
128.470283
249.714397
412.273972
209.863001
15.124462
82.707677
107.920589
36.578337
93.204537
319.627346
467.981200
217.199212
112.357260
436.531463
539.398636
244.403122
171.536961
357.449188
304.659162
124.382338
348.647865
688.799570
558.873744
107.848157
839.199979
2062.409204
1868.354986
887.707147
327.703739
1764.979712
1719.109276
490.697719
1988.882100
3567.302891
2105.583275
574.683322
999.835556
1786.632568
799.967777
299.678152
1380.466216
2156.474051
828.256964
766.223052
1829.334042
1803.363834
737.044905
299.136589
2880.759470
2213.602171
908.967256
1592.694196
5166.117698
3835.215903
450.359429
1395.806497
2918.102734
1891.449097
188.165329
1163.458684
2540.709125
1581.512129
112.751993
682.373248
1548.694497
854.911153
164.875652
1029.128604
1939.579691
1417.125765
1337.753013
3944.225360
5519.344518
2384.923653
583.796682
2458.718160
3140.012594
987.814890
434.565230
1756.314071
1947.751767
526.253609
187.247507
427.699973
407.330054
143.902438
490.030504
1414.023394
1030.961857
126.186865
272.583216
616.689114
390.367587
42.065243
113.634853
185.324652
89.681899
8.847374
85.021338
138.987133
67.180587
46.491930
93.143878
78.582227
58.887399
20.319832
228.802354
281.717388
47.723975
139.927903
488.602445
459.125426
110.426866
171.397232
450.279904
374.414868
23.829319
1010.747769
2626.298659
1971.518880
187.902757
3142.026047
8142.307593
5403.208023
909.137978
2899.287574
5616.741208
2594.513953
436.179648
1250.208659
1889.449001
724.583667
377.653547
2380.999194
3373.805386
981.820744
382.872802
1656.901838
1884.641017
514.126439
349.028063
1417.214780
1364.980829
203.213192
577.353273
2617.929932
2355.961530
625.689884
284.190214
1495.975661
1662.461878
662.848124
2527.558923
5382.561455
1688.622805
1494.922556
23862.632429
53105.546535
31091.473788
1815.241933
7995.679948
13616.845331
6134.461689
1078.194445
12554.466771
19249.283983
8318.022470
2085.171808
12666.127960
15787.031123
4116.974462
4212.093016
14854.433268
16377.880039
5012.716745
5607.252047
24978.458262
22910.194585
2382.337631
32690.873082
82338.646016
56087.063497
3657.272812
13884.380447
38019.211781
26159.273276
3329.020035
8827.917676
18042.526393
9847.318473
869.641591
4537.246040
8760.859958
4474.431404
522.026920
2045.662095
3520.158367
1514.823949
1232.940761
13396.310069
17571.189057
6459.991858
4989.491047
32316.502973
34713.636216
10469.122752
27241.595799
114225.254099
116340.511468
14820.844991
160262.294293
589810.463903
494398.655753
68301.358869
96095.486191
299364.596902
202280.618959
20541.013632
97037.836652
224766.331147
139823.858600
6979.400544
9231.216723

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@ -0,0 +1,76 @@
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define LENGTH 512 /* 信号長N ただし,2の整数乗 */
/* プロトタイプ宣言 */
double calcAmpPower(short *x, int N);
void applyWindow(short *x, int N);
int main(int argc, char *argv[]) {
/* 信号長 */
int N = LENGTH;
double beforePower, afterPower;
int i;
FILE *fp = NULL;
if (argc > 1) {
fp = fopen(argv[1], "rb");
if (fp == NULL) {
fprintf(stderr, "File open error (%s)\n", argv[1]);
exit(1);
}
} else {
fprintf(stderr, "Usage: %s input-filename\n", argv[0]);
exit(1);
}
/* 入力信号配列 */
short input[LENGTH];
/* 音声データを読み込み */
if (fread(input, sizeof(short), N, fp) != (size_t)N) {
fprintf(stderr, "File read error (%s)\n", argv[1]);
fclose(fp);
exit(1);
}
beforePower = calcAmpPower(input, N);
applyWindow(input, N);
afterPower = calcAmpPower(input, N);
printf("BEFORE : %16f\n", beforePower);
printf("AFTER : %16f\n", afterPower);
printf("DIFF : %16f\n", beforePower - afterPower);
printf("RATIO : %16f\n", afterPower / beforePower);
fclose(fp);
return 0;
}
/* short型配列の平均パワーを求める関数 */
double calcAmpPower(short *x, int N) {
double amp;
double power = 0.0;
for (int i = 0; i < N; i++) {
amp = x[i] * x[i];
power += amp;
}
return power / N;
}
/* 配列にハニング窓を適用 */
void applyWindow(short *x, int N) {
for (int i = 0; i < N; i++) {
double w = 0.5 - 0.5 * cos(2.0 * M_PI * i / (N - 1)); // ハニング窓
x[i] *= w;
}
}

@ -0,0 +1,512 @@
46641.156978
37511.467194
62654.600973
53098.321814
48765.143716
82277.064365
49853.212548
76918.150629
96311.043099
72146.823225
90857.724845
84488.871404
79408.064830
66237.763662
36150.184987
234516.822105
243323.470675
79285.301485
9424.595409
76964.840300
70848.456098
65603.490118
96128.864503
49940.359620
80897.060405
73683.062857
86433.299676
103141.404090
115777.277100
138943.931192
347929.478414
453021.598933
401873.667045
115475.521300
114034.857272
77509.718568
72699.166425
47589.940824
50667.524401
34319.323353
4644.376742
47135.068944
70427.059204
11275.856384
110138.707616
157444.492522
363601.912045
264627.383969
123378.328308
58013.834745
58181.758728
50310.055886
101572.172794
37271.805985
72541.767998
102069.488762
23946.077276
83545.339979
89072.164684
63447.824363
124337.005337
146212.479978
207852.682908
280815.405845
75137.026011
63194.416580
20229.063725
38200.998624
76168.971551
74714.970306
88652.544249
126612.098456
50109.432215
88205.276032
66268.487101
88138.240295
252681.703504
793421.107466
742786.039720
307240.399498
16353.250648
95321.630748
45215.194092
32699.249456
35330.540543
24384.695875
49844.444157
23429.929913
23097.378326
31232.162858
38358.323848
50468.380771
152813.868808
345445.949089
273798.201420
40249.181211
84684.880187
82187.063771
52899.505125
60924.404175
66964.421290
76010.278968
82733.134787
129268.496409
106653.292093
94813.970750
152117.297007
131290.291911
513260.663701
503544.754483
165851.193550
7104.107430
70709.153441
90048.139890
33464.005057
71804.146811
86839.054349
8278.985799
80822.983457
47901.284344
56656.774513
79558.163302
17425.855924
253269.650353
554146.237729
396797.228499
40819.841167
73008.611948
110346.266618
31512.004197
68314.982356
47293.184769
26292.016086
46150.869613
18085.430946
49050.484831
74632.075920
28082.544757
85509.660850
69889.180349
198209.983089
101335.613416
80263.127013
35486.161176
46963.221133
58606.467016
40166.572083
30490.222489
59596.535087
23631.104051
26245.933598
29545.414113
58378.497097
16744.088612
322642.987002
509721.427648
421463.912778
138954.899663
100306.853240
69083.986504
135869.130106
80995.285819
115917.231996
87099.244104
18378.924696
24980.813373
69266.906024
116324.023671
74954.359172
128715.430792
188969.556456
356244.096170
147608.852998
50970.702692
33374.291232
27023.477839
22817.410587
65922.481919
74880.260147
61945.179593
122752.212665
86100.604072
96986.388411
131276.139661
73447.113194
117083.741277
62184.574642
84351.349434
21675.077428
38348.579097
13129.385433
56851.737450
47310.448047
24286.890353
53404.667670
18136.187083
18107.639471
26418.607952
59869.710737
74693.662865
210164.034275
694949.324609
879638.708344
418933.456624
71934.647191
87315.833777
77509.007672
52431.592699
61352.105954
15274.739811
16717.928487
5823.803756
37443.004874
40321.260538
32215.521611
35119.426911
214221.663224
439096.549983
382866.208489
73482.960823
73154.343047
63381.981537
21061.226030
41267.307717
34927.582593
51056.558294
82218.427936
24712.943128
83737.347433
42139.839954
111506.341464
193540.444913
506993.796503
538486.258767
330098.196856
53013.032644
71975.379071
9299.695768
34345.458241
20773.758563
56584.931754
8865.018778
68242.433170
31490.856965
64104.910834
63424.966546
38705.567973
99016.370333
77884.819800
34224.368060
45959.234193
36755.716922
57508.610070
6796.625978
37517.719812
24939.856735
5044.181465
24939.856735
37517.719812
6796.625978
57508.610070
36755.716922
45959.234193
34224.368060
77884.819800
99016.370333
38705.567973
63424.966546
64104.910834
31490.856965
68242.433170
8865.018778
56584.931754
20773.758563
34345.458241
9299.695768
71975.379071
53013.032644
330098.196856
538486.258767
506993.796503
193540.444913
111506.341464
42139.839954
83737.347433
24712.943128
82218.427936
51056.558294
34927.582593
41267.307717
21061.226030
63381.981537
73154.343047
73482.960823
382866.208489
439096.549983
214221.663224
35119.426911
32215.521611
40321.260538
37443.004874
5823.803756
16717.928487
15274.739811
61352.105954
52431.592699
77509.007672
87315.833777
71934.647191
418933.456624
879638.708344
694949.324609
210164.034275
74693.662865
59869.710737
26418.607952
18107.639471
18136.187083
53404.667670
24286.890353
47310.448047
56851.737450
13129.385433
38348.579097
21675.077428
84351.349434
62184.574642
117083.741277
73447.113194
131276.139661
96986.388411
86100.604072
122752.212665
61945.179593
74880.260147
65922.481919
22817.410587
27023.477839
33374.291232
50970.702692
147608.852998
356244.096170
188969.556456
128715.430792
74954.359172
116324.023671
69266.906024
24980.813373
18378.924696
87099.244104
115917.231996
80995.285819
135869.130106
69083.986504
100306.853240
138954.899663
421463.912778
509721.427648
322642.987002
16744.088612
58378.497097
29545.414113
26245.933598
23631.104051
59596.535087
30490.222489
40166.572083
58606.467016
46963.221133
35486.161176
80263.127013
101335.613416
198209.983089
69889.180349
85509.660850
28082.544757
74632.075920
49050.484831
18085.430946
46150.869613
26292.016086
47293.184769
68314.982356
31512.004197
110346.266618
73008.611948
40819.841167
396797.228499
554146.237729
253269.650353
17425.855924
79558.163302
56656.774513
47901.284344
80822.983457
8278.985799
86839.054349
71804.146811
33464.005057
90048.139890
70709.153441
7104.107430
165851.193550
503544.754483
513260.663701
131290.291911
152117.297007
94813.970750
106653.292093
129268.496409
82733.134787
76010.278968
66964.421290
60924.404175
52899.505125
82187.063771
84684.880187
40249.181211
273798.201420
345445.949089
152813.868808
50468.380771
38358.323848
31232.162858
23097.378326
23429.929913
49844.444157
24384.695875
35330.540543
32699.249456
45215.194092
95321.630748
16353.250648
307240.399498
742786.039720
793421.107466
252681.703504
88138.240295
66268.487101
88205.276032
50109.432215
126612.098456
88652.544249
74714.970306
76168.971551
38200.998624
20229.063725
63194.416580
75137.026011
280815.405845
207852.682908
146212.479978
124337.005337
63447.824363
89072.164684
83545.339979
23946.077276
102069.488762
72541.767998
37271.805985
101572.172794
50310.055886
58181.758728
58013.834745
123378.328308
264627.383969
363601.912044
157444.492522
110138.707616
11275.856384
70427.059204
47135.068944
4644.376742
34319.323353
50667.524401
47589.940824
72699.166425
77509.718568
114034.857272
115475.521300
401873.667045
453021.598933
347929.478414
138943.931192
115777.277100
103141.404090
86433.299676
73683.062857
80897.060405
49940.359620
96128.864503
65603.490118
70848.456098
76964.840300
9424.595409
79285.301485
243323.470675
234516.822105
36150.184987
66237.763662
79408.064830
84488.871404
90857.724845
72146.823225
96311.043099
76918.150629
49853.212548
82277.064365
48765.143716
53098.321814
62654.600973
37511.467194

@ -0,0 +1,512 @@
67878.585572
39750.975336
20851.205185
122075.862508
152183.425437
49801.568681
23579.691951
81703.272178
78669.710749
14071.031456
48598.907498
156077.299370
109313.388351
15788.258299
87697.142440
171930.374728
80653.974617
26284.430482
219286.987174
297285.513775
105547.569250
43470.188694
233384.379243
226099.993257
72917.252507
65321.404325
216544.284439
157539.658672
11243.779314
111632.140424
227180.719671
118375.906743
19713.461029
206070.842353
279221.143262
87886.975240
8077.468711
36766.416534
30339.586826
6838.861377
9645.512703
27210.493170
16742.564771
5382.691149
11206.944491
20898.465575
8405.805540
2205.207228
10418.942706
14610.105414
4738.414149
2464.920423
9246.159707
8832.165077
3048.090977
2845.019969
8155.928506
5661.714210
2169.658706
3108.205774
8349.136025
4353.753914
1103.358149
3514.051887
4590.035525
1282.960803
923.206439
10436.328281
11226.805340
3098.120513
2879.601089
8395.004904
5649.990623
1899.858879
4760.030542
8959.450932
5346.096045
2169.021360
14794.863831
25512.793021
17088.441177
8284.428763
18281.526208
24851.244282
7584.824260
5385.224392
19933.298715
20624.312303
9567.156338
5546.003218
11302.412882
5920.092337
1905.758008
1183.054937
1767.534765
654.226863
428.321583
1168.298758
1562.877302
635.217305
328.185890
1298.570700
929.818493
699.044125
1209.999834
2726.556350
1727.491348
852.153974
2229.012139
2597.378795
1931.458119
1745.928799
8989.941945
11972.529466
8182.881459
1176.305384
12779.847256
13064.512053
2805.516155
5568.234497
13310.202967
10321.488775
7261.823210
9795.775975
16300.661109
7266.302055
3221.769107
9792.080281
9281.161223
5841.537778
5062.605705
17426.927100
15053.943742
4401.399026
12718.614499
40855.536460
38110.056968
19765.607869
20975.333367
28501.896648
12251.073564
6833.661721
8281.484573
9612.763439
9960.058597
4545.859728
12927.725680
12908.205053
13165.626058
6645.536208
12360.234890
12236.430878
4610.433995
5836.192037
12958.969620
7815.308086
3423.943597
7252.086217
8892.281956
4319.821577
3082.562080
7687.314272
7671.465616
4311.514360
3059.998880
4205.585386
5020.287519
4799.165368
5192.522586
8879.938152
4151.041674
3668.673590
10630.969415
11998.527260
9218.535989
5306.848657
17075.477920
18682.241082
15303.851538
10259.120568
23871.746018
26890.148619
19158.231312
7472.290773
19080.991305
7615.346712
8099.730239
13551.647605
11374.532466
5932.711760
910.627694
17035.444887
14240.795214
7949.952115
1934.211962
4207.452869
2177.118308
3256.221071
3764.624120
4303.387263
3878.102880
2584.289933
3709.749476
3319.908593
1214.651334
1445.879080
1271.941101
281.286298
1267.419622
810.904777
3189.827609
2384.158222
1660.538589
2078.844158
2475.844710
1490.134067
888.761621
1416.383096
1780.248340
1722.482032
1228.390228
1426.768700
1203.465145
1475.523234
923.167953
1182.609117
1186.533271
1013.963231
1092.115418
1435.822103
1048.954788
581.561059
1002.571705
1282.457678
1062.144177
435.280957
1145.102644
1214.635296
1182.200971
433.178919
807.325175
730.051370
469.924170
638.953468
934.013041
1154.749387
758.280458
1057.018698
1528.908557
1052.163018
140.862274
793.536129
736.751415
1057.203658
428.007340
255.192490
217.931380
255.192490
428.007340
1057.203658
736.751415
793.536129
140.862274
1052.163018
1528.908557
1057.018698
758.280458
1154.749387
934.013041
638.953468
469.924170
730.051370
807.325175
433.178919
1182.200971
1214.635296
1145.102644
435.280957
1062.144177
1282.457678
1002.571705
581.561059
1048.954788
1435.822103
1092.115418
1013.963231
1186.533271
1182.609117
923.167953
1475.523234
1203.465145
1426.768700
1228.390228
1722.482032
1780.248340
1416.383096
888.761621
1490.134067
2475.844710
2078.844158
1660.538589
2384.158222
3189.827609
810.904777
1267.419622
281.286298
1271.941101
1445.879080
1214.651334
3319.908593
3709.749476
2584.289933
3878.102880
4303.387263
3764.624120
3256.221071
2177.118308
4207.452869
1934.211962
7949.952115
14240.795214
17035.444887
910.627694
5932.711760
11374.532466
13551.647605
8099.730239
7615.346712
19080.991305
7472.290773
19158.231312
26890.148619
23871.746018
10259.120568
15303.851538
18682.241082
17075.477920
5306.848657
9218.535989
11998.527260
10630.969415
3668.673590
4151.041674
8879.938152
5192.522586
4799.165368
5020.287519
4205.585386
3059.998880
4311.514360
7671.465616
7687.314272
3082.562080
4319.821577
8892.281956
7252.086217
3423.943597
7815.308086
12958.969620
5836.192037
4610.433995
12236.430878
12360.234890
6645.536208
13165.626058
12908.205053
12927.725680
4545.859728
9960.058597
9612.763439
8281.484573
6833.661721
12251.073564
28501.896648
20975.333367
19765.607869
38110.056968
40855.536460
12718.614499
4401.399026
15053.943742
17426.927100
5062.605705
5841.537778
9281.161223
9792.080281
3221.769107
7266.302055
16300.661109
9795.775975
7261.823210
10321.488775
13310.202967
5568.234497
2805.516155
13064.512053
12779.847256
1176.305384
8182.881459
11972.529466
8989.941945
1745.928799
1931.458119
2597.378795
2229.012139
852.153974
1727.491348
2726.556350
1209.999834
699.044125
929.818493
1298.570700
328.185890
635.217305
1562.877302
1168.298758
428.321583
654.226863
1767.534765
1183.054937
1905.758008
5920.092337
11302.412882
5546.003218
9567.156338
20624.312303
19933.298715
5385.224392
7584.824260
24851.244282
18281.526208
8284.428763
17088.441177
25512.793021
14794.863831
2169.021360
5346.096045
8959.450932
4760.030542
1899.858879
5649.990623
8395.004904
2879.601089
3098.120513
11226.805340
10436.328281
923.206439
1282.960803
4590.035525
3514.051887
1103.358149
4353.753914
8349.136025
3108.205774
2169.658706
5661.714210
8155.928506
2845.019969
3048.090977
8832.165077
9246.159707
2464.920423
4738.414149
14610.105414
10418.942706
2205.207228
8405.805540
20898.465575
11206.944491
5382.691149
16742.564771
27210.493170
9645.512703
6838.861377
30339.586826
36766.416534
8077.468711
87886.975240
279221.143262
206070.842353
19713.461029
118375.906743
227180.719671
111632.140424
11243.779314
157539.658672
216544.284439
65321.404325
72917.252507
226099.993257
233384.379243
43470.188694
105547.569250
297285.513775
219286.987174
26284.430482
80653.974617
171930.374728
87697.142440
15788.258299
109313.388351
156077.299370
48598.907498
14071.031456
78669.710749
81703.272178
23579.691951
49801.568681
152183.425437
122075.862508
20851.205185
39750.975336

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save