MATLAB: Using find command on each term in a vector

findvectorized

I have two vectors that I am trying to use in my calculation.
One is a list of coordinates. A=-10:10
The other is a list of random numbers that may or may not be between these values. B=22*rand(1,30)-11
What I am trying to do is find the first value in A that is greater than each term in B. If B(1)=6.4, then I want the find command to give me the index in A that corresponds to 7. I want this value for each term in the B array, even if it’s the “empty 1-by-0 matrix.”
The syntax for that on each individual term in B is easy enough, but my question is: Is there a way to use the find command on the entire vector B at the same time and store that result in a third vector, or do I need to use using a for C=1:size(B,2) loop?

Best Answer

Not really a syntax for find, but take advantage of arrayfun
a = -10:10;
b = 22*rand(1,30)-11;
c = arrayfun(@(x) find(a>x,1), b, 'UniformOutput', false)