# How to do sliding window multiplication in frequency domain

I want to perform the following computations with the impulse response of length L of a LTI system:

1. Multiply the impulse response with a window w(n) of length M << L.
2. Take the FFT of the result in 1 and save as a vector Y2.
3. "Move" the window to the "right" by M/2 samples, i.e. take w(n-M/2), and multiply the impulse response with this new window.
4. Take the FFT of the result in 3 and save as a vector Y2.
5. Move the window to the right again by M/2 samples, i.e. take w(n-2*M/2), and multiply the impulse response with this new window.
6. Take the FFT of the result in 5 and save as a vector Y3.
7. Etc... (keep doing this process until the end of the impulse response, I hope you get the idea).

I think this is easy to do with a for loop in Matlab. However, I already have immediate access to the frequency response (the FFT of the impulse response). I was therefore wondering if there is a way to get my vectors Y1, Y2, Y3, etc... by computations in the frequency domain instead? I know that multiplication in the time domain corresponds to convolution in the frequency domain. So to get for instance the vector Y5 with the above notation, would it be possible to do as follows?

Take the FFT of the window w(n-5*M/2), and simply convolve it with the frequency response? And how do I know if it's faster/slower than just taking the inverse FFT of the frequency response and doing the steps described above?

Yes. Rough outline: you take a full length FFT if the zero padded window. For each frame you can implement the time shift a multiplication with $$e^jn\omega$$ and then do a circular convolution and downsample. If you choose the window size well, you can do a down-sampled convolution instead.
It will almost always be slower. Convolution has computational complexity of $$N^2$$ whereas multiplication has only $$N$$. Saving a few short FFTs will not compensate of this.