On 6/6/2014 12:03 PM, Bruno Luong wrote: >> >> Yet another approach somewhat akin to Bruno's... >> >> >> interp1(a,1:length(a),x,'nearest') >> ans = >> 3 > > Not completely equivalent, INTERP1 will has the resulting index jumps by > 1 unit when passing the middle point of the EDGES, whereas HISTC jumps > right at the EDGES.
Didn't say it was equivalent; only that it is "_somewhat_ akin to"...
> INTERP1 and HISTC methods can deal with x as vector (not FIND()).
But FIND() returns the specific preceding/following index value depending on the usage if that's significant. The vector of lookup values is easily dealt with via ARRAYFUN
>> x=[sqrt(x) x x.^1.5] x = 2.9223 8.5400 24.9567 >> arrayfun(@(x) find(x>a,1,'last'),x) ans = 1 3 4 >> arrayfun(@(x) find(x<a,1,'first'),x) ans = 2 4 5 >>