Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * egg_array_float_convolve:
- *
- * @data: input array
- * @kernel: kernel array
- * Return value: Colvolved array, same length as data
- *
- * Convolves an array with a kernel, and returns an array the same size.
- * THIS FUNCTION IS REALLY SLOW...
- **/
- EggArrayFloat *
- egg_array_float_convolve (EggArrayFloat *data, EggArrayFloat *kernel)
- {
- gint length_data;
- gint length_kernel;
- EggArrayFloat *result;
- gfloat value;
- gint i;
- gint j;
- gint idx;
- length_data = data->len;
- length_kernel = kernel->len;
- result = egg_array_float_new (length_data);
- /* convolve */
- for (i=0;i<length_data;i++) {
- value = 0;
- for (j=0;j<length_kernel;j++) {
- idx = i+j-(length_kernel/2);
- if (idx < 0)
- idx = 0;
- else if (idx >= length_data)
- idx = length_data - 1;
- value += g_array_index (data, gfloat, idx) * g_array_index (kernel, gfloat, j);
- }
- g_array_index (result, gfloat, i) = value;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement