# Deleting Triangulation Entries from a Delaunay Triangulation Based on Indices Given by a Logical Array

13 views (last 30 days)
Alessandro on 8 May 2014
Commented: Alessandro on 8 May 2014
Hello,
I am using Delaunay Triangulations to map a 3D space. Given certain criteria, I select a certain number of points to be removed both from my coordinates vector and the triangulation matrix. I am using a logical array to define the coordinates vector indices to remove, now I want to use that directly to detect which rows of the triangulation contain those indices and delete them. A little example:
A = [1 2 3;4 5 6;7 8 9;10 11 12]; % Coordinate Matrix
bound = [5 3 3]; % Spatial Bounds
ids = bound(1,1) <= A(:,1) & bound(1,2) <= A(:,2) & bound(1,3) <= A(:,3); % logical operator
This code gives
ids = [0 0 1 1]
This means I can delete the coordinates not satistying my boundaries with
A(ids,:) = [];
But how can I search for the indices 3 and 4 (the one resulting from the logical operation) inside a big Triangulation matrix (of size n*4) and delete every row containing one of those indices? I obviously only care about rows.
Thanks

the cyclist on 8 May 2014
Are you saying that if
T = [1 2 6 7; 1 3 6 7; 1 4 6 7; 1 5 6 7];
you want to remove the second and third rows, because they contain the numbers 3 or 4?
Alessandro on 8 May 2014
Exactly!

the cyclist on 8 May 2014
If my comment above is a correct interpretation of what you want, then this code will do it:
T(any(ismember(T,find(ids)),2),:) = [];

#### 1 Comment

Alessandro on 8 May 2014
Works perfectly, thanks!