Question about vectorizing a search function
1 view (last 30 days)
I have a Nx2 matrix, and I want to check for the existence of elements in the second column in my first column.
What I have set up is a binary tree, with a Nx2 matrix of point indices indicating which point is connected to what. (i.e.[1 2] means point 1 is connected to point 2, etc). For my terminal end points, they never exist as beginning points, only end points, so with the way I have it set up, they will never be found in the first column.
What I want to use is the find function, which is fast. I have something working with the ismember function, but that can get to be very slow with larger trees. Some sample code I have is:
terminalIndices = ismember(connMx(:,2), connMx(:,1))
where connMx is my Nx2 matrix of point connection indices.
Other than that, what I would do (and saves some time with overlarge trees, but is too verbose) is looping from 1 to nPoints with the code:
counter = 1;
a = find(ccoFaceMx(:,1) == i)
if a ~= 
termIdxArray(counter) = a
counter = counter+1;
Again, for smaller trees this is fine, but I can at times have trees larger than 1000 elements, and this function begins to slow down considerably then.
Are there any alternatives to this? Thanks for your advice!