Source: https://web.stanford.edu/class/ee364a/lectures/filters.pdf