# Lowpass with Hann window

**URL:** <https://discourse.julialang.org/t/lowpass-with-hann-window/100227>\
**Category:** Signal and Image Processing\
**Created:** [June 12, 2023, 12:18pm UTC](https://discourse.julialang.org/t/lowpass-with-hann-window/100227 "2023-06-12T12:18:45Z")\
**Posts on this page:** 1\
**Showing post:** 17

<div class="post-metadata">

**Author:** ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)\
**Post date:** [June 13, 2023, 1:28pm UTC](https://discourse.julialang.org/t/lowpass-with-hann-window/100227/17 "2023-06-13T13:28:26Z")

</div>

> [@ryofurue](#):
>
> Thanks, that’s exactly what I was looking for, except that the range of `n` isn’t defined in the Wikipedia article:
> 
> (f \* g)[n] = sum\_{m = -M}^{m = M} f[n - m] g[m]
> 
> n can be any integer, positive or negative. The formula applies for arbitrary integers.
> 
> So, this alone isn’t sufficient to determine the implementation of `conv`.

Yes; mathematically, the functions `f[n]` and `g[n]` in that formula are defined for all `n`. In practice, those signals have finite duration. The convolution is the sum of the product of one signal times a shift of the other, which is interesting only where the signals “overlap”, and this is what `conv` calculates.

And yes, in general a convolution is not symmetrical.

See this recent thread about the implementation of convolution: [Optimizing Direct 1D Convolution Code](https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658)

---

_[View the full topic](https://discourse.julialang.org/t/lowpass-with-hann-window/100227)._
