restricting vector using if else loop. How to get rid of false values from the matrix

1 view (last 30 days)
Hi suppose I have a 100x3 matrix representing coordinates in xyz plane. I use an if loop to select particles with a certain x value and y value and create a new matrix.
Eg:
for i=1:length(matrix)
if matrix(i,1)>100 & matrix(i,1)<400 & matrix(i,2)>100 & matrix(i,2)<400
matrix_new(i,1)=matrix(i,1);
matrix_new(i,2)=matrix(i,2);
matrix_new(i,3)=matrix(i,3);
end
end
The new matrix I get has zeros for the conditions that are false. How can I modify this condition so that I get a matrix without zeros.
Thanks

Accepted Answer

Walter Roberson
Walter Roberson on 30 Aug 2017
mask = matrix(:,1)>100 & matrix(:,1)<400 & matrix(:,2)>100 & matrix(:,2)<400;
new_matrix = matrix(mask, :);

More Answers (0)

Community Treasure Hunt

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

Start Hunting!