Masking data of 4D images

Hi there,
I have a 3D binary mask and I would like to mask my 4D data. So basically I would like to keep the information of my 4D data in all the voxels corresponding to the mask.
Any idea how to do this?

Answers (1)

Hi Gina,
I suppose that you want to repeat the binary mask along the missing dimension of your 4D data, right?
One possibility could be the following:
mask4d = repmat(mask, 1, 1, 1, size(data, 4));
values = data(mask4d);
(This assumes that the three dimensions of the mask correspond to the first three dimension of the data).

1 Comment

Gina Carts
Gina Carts on 10 Oct 2019
Edited: Gina Carts on 10 Oct 2019
Yes, I want to repeat the mask along the 4th dimension to identify the non zero voxels. The rest will be zero.
I tried what you have suggested but I'm getting the following error at this line: values = data(mask4d);
My data are all positive numbers
Subscript indices must either be real positive integers or logicals.

Sign in to comment.

Asked:

on 10 Oct 2019

Edited:

on 10 Oct 2019

Community Treasure Hunt

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

Start Hunting!