I know for a matrix say mat, if I want to delete all elements (element-wise) that satisfy certain condition, e.g. remove all zeros, this will do:
mat(mat == 0) = [];
But how can I do this sub-matrix-wise, i.e. remove matrix sub-matrix elements given conditions. As an example, data4d is a 4D matrix with size n1 x n2 x n3 x n4. If all the elements of the i-th (1=<i<=n4) sub-matrix of the fourth dimension, i.e. data4d(:, :, :, i) == zeros(n1, n2, n3), it will be removed, i.e. data4d(:, :, :, i) = [].
How can I do these without simple for loop? Both the following two version will not work:
data4d(data4d == zeros(n1, n2, n3)) = []; // version 1
data4d(data4d == zeros(n1, n2, n3, 1)) = []; // version 2