Moving window in time domain

4 visualizaciones (últimos 30 días)
ecartman22
ecartman22 el 19 de Jul. de 2021
Comentada: ecartman22 el 20 de Jul. de 2021
I have a 3D matrix X*Y*T and I would like to apply a bandpass filter in the 3rd dimension. Instead of doing it on the complete series at once, I would like to have a window of size n for example (X,Y,1:n) on which I filter and then move to the next window (X,Y,n+1:2n) and so on. What is the most efficient way of doing this?

Respuestas (1)

Image Analyst
Image Analyst el 19 de Jul. de 2021
Editada: Image Analyst el 19 de Jul. de 2021
The convn() function.
n = 3;
kernel = repmat(1, 1, 1, n) / n;
smoothedImage = convn(image3d, kernel, 'same');
  3 comentarios
Image Analyst
Image Analyst el 19 de Jul. de 2021
See untested code I added above. It will average over n slices in the z dimension then scan all over to hit every (x,y) location. The image can have more slices than n. For example, you can have 50 slices and n can be 3 then it will average over 3 slices at a time, then move down a slice and repeat until all slices have been scanned.
ecartman22
ecartman22 el 20 de Jul. de 2021
Thanks a lot! This is averaging over a window. How could I change the kernel so it bandpass filters the window in the time domain?

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by