Removing zeroes from 3d matrrix
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I want to remove the zeros from a 3D matrix and bring the non zeroes values upwards. I am attaching the picture which will explain more clearly. I dont want to reduce slices..
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/322804/image.jpeg)
The zeroes should be removed and non zeroes entries should face each other.
I looked at these links
But it is not working for me...
does anyone has an idea..?
0 Kommentare
Antworten (2)
Image Analyst
am 27 Jun. 2020
You cannot do that for a 3-D matrix. You must have the same number of elements even if you shift things around, unless you have a whole plane in the X, Y, or Z dimension that is all zeros. In that case you can remove a whole plane. Otherwise it's not clear which dimension and direction the column goes and what direction to shift it in.
Your screenshot shows a 2-D matrix, and for that, you can shift one column up if that's what you want to do. Untested code:
[rows, columns, slices] = size(m); % m is your array.
for col = 1 : columns
thisColumn = m(:, col);
% Remove zeros
thisColumn(thisColumn == 0) = [];
% Erase whole column at first.
m(:, col) = 0;
% Put back in the nonzero elements at the top.
m(1 : length(thisColumn), col) = thisColumn;
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!