Moving window in time domain

5 Ansichten (letzte 30 Tage)
ecartman22
ecartman22 am 19 Jul. 2021
Kommentiert: ecartman22 am 20 Jul. 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?

Antworten (1)

Image Analyst
Image Analyst am 19 Jul. 2021
Bearbeitet: Image Analyst am 19 Jul. 2021
The convn() function.
n = 3;
kernel = repmat(1, 1, 1, n) / n;
smoothedImage = convn(image3d, kernel, 'same');
  3 Kommentare
Image Analyst
Image Analyst am 19 Jul. 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 am 20 Jul. 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?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by