diff options
Diffstat (limited to 'src/bin_values.c')
-rw-r--r-- | src/bin_values.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/bin_values.c b/src/bin_values.c new file mode 100644 index 0000000..2cb9cf6 --- /dev/null +++ b/src/bin_values.c @@ -0,0 +1,23 @@ + +#include "fracture.h" + +double *bin_values(fnet *network, unsigned int width, double *values) { + double *binned = calloc(pow(width, 2), sizeof(double)); + unsigned int *num_binned = calloc(pow(width, 2), sizeof(unsigned int)); + for (unsigned int i = 0; i < network->num_edges; i++) { + if (values[i] != 0) { + unsigned int x = ((int)(network->edge_coords[2 * i] * width)) % width; + unsigned int y = ((int)(network->edge_coords[2 * i + 1] * width)) % width; + binned[width * x + y] += fabs(values[i]); + num_binned[width * x + y]++; + } + } + + for (unsigned int i = 0; i < pow(width, 2); i++) { + if (num_binned[i] != 0) { + binned[i] /= num_binned[i]; + } + } + + return binned; +} |