What's the fastest way to get the points I want out of a huge blob?
Prefiltering all relevant x-values with a binary search could speed up the process.

[a,A]=myFind2(mtx_region(:,1),dxLowerBound,dxUpperBound);

xpoints=mtx_region(a:A,:);
mtx_region = xpoints(     dyLowerBound &lt; xpoints(:,2) &amp; ...
                            dyUpperBound &gt; xpoints(:,2), : );


Binary search on sorted arrays is already discussed here.

function [b,c]=myFind2(x,A,B)
a=1;
b=numel(x);
c=1;
d=numel(x);
while (a+1&lt;b||c+1&lt;d)
    lw=(floor((a+b)/2));
    if (x(lw)&lt;A)
        a=lw;
    else
        b=lw;
    end
    lw=(floor((c+d)/2));
    if (x(lw)&lt;=B)
        c=lw;
    else
        d=lw;
    end
end
end