- ComplexMat_ sum_over_channels() const
- {
- assert(p_data.num_elem == n_channels * rows * cols);
-
- uint n_channels_per_scale = n_channels / n_scales;
- uint scale_offset = n_channels_per_scale * rows * cols;
-
- ComplexMat_ result(this->rows, this->cols, 1, n_scales);
- for (uint scale = 0; scale < n_scales; ++scale) {
- for (uint i = 0; i < rows * cols; ++i) {
- std::complex<T> acc = 0;
- for (uint ch = 0; ch < n_channels_per_scale; ++ch)
- acc += p_data[scale * scale_offset + i + ch * rows * cols];
- result.p_data.hostMem()[scale * rows * cols + i] = acc;
- }
- }
- return result;
- }