MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# Identify an array of arbitrary minimum values. Alternatives to min / find ?

Asked by Jamie on 18 Apr 2013

I would like to identify the occurences (index) of an arbitrary value within a Vector. The values I wish to identify will be close to but may not be exactly equal to this value.

For example having obtained the vector [Vector,t] = lsim(G,u,t) I would like to identify those points where the Vector assumedly intersects a horizontal line of given amplitude plot([X1 X2],[Y1 Y1])

I can obtain the first value quite simply with something along the lines of

[index value] = min(abs(abs(Vector) - abs(arbitrary_value)))

The find function is of some assitance however it requires that the arbitrary value equals the value of an element within the Vector exactly. Hence Idxs = find(A==MinValue) does not return a value within proximity of the intersection (or any point for that matter)

I thought I might be able to scrape by with a for loop i.e.

for i = 1:length(Vector)

```if (Vector(i) - arbitrary_value) < tolerance
index(k) = i;
Value(k) = y(i);
k = k+1;
end
end
```

however it is far from an attractive or precise solution.

Any suggestions would be welcome.

Regards

## Products

No products are associated with this question.

Answer by Andrei Bobrov on 18 Apr 2013
Edited by Andrei Bobrov on 18 Apr 2013

eg:

```tolerance = 1e-3;
ii = abs(Vector - arbitrary_value) < tolerance;
```
```Value = Vector(ii);
index = find(ii);
```

```t = vin - av;
idx = cellfun(@(x)strfind(sign(t(:).'),x),{0,[-1 1],[1 -1]},'un',0);
x0 = bsxfun(@plus,[idx{2:end}],(0:1)');
[~,ii] = min(abs(t(x0)));
iout = sort([[idx{1}],x0(sub2ind(size(x0),ii,1:size(x0,2)))]);
index = vin(iout);
```

Jamie on 18 Apr 2013

Hi Andrei, thank you for that. much tidier. With regards to the respective points of intersection, depending on the value of 'tolerance' I either obtain numerous points around certain crossings or fail to obtain other crossings altogeather. If I could obtain one index per point of intersection that would be most helpful

Andrei Bobrov on 18 Apr 2013