Asked by soloby
on 23 Jun 2015

If I were to have

x = -10:0.1:10;

y = 0:0.005:1;

f1 = trapmf(x,[-2 0 0 2])

is there anyway I can get min(x) and max(x) for all y's?

like

[min(x), max(x)] of f1 for y = 0

[min(x), max(x)] for y = 0.005

...

[min(x), max(x)] for y = 1

I've been wondering if it'd be any easier for me to play with the inverse of this function?

Answer by Guillaume
on 23 Jun 2015

A simple way would be to use a for loop over the values of y. Within the loop, you'd find the first and last index of f where it is equal to y. Use these two indices to return the corresponding value of x. That's the min and max.

xmin = nan(size(y));

xmax = nan(size(y));

for yiter = 1:numel(y)

indices = find(f == y(yiter));

if ~isempty(indices)

xmin(yiter) = x(indices(1));

xmax(yiter) = x(indices(end));

end

end

The above returns nan for the value of y for which f has no value.

soloby
on 23 Jun 2015

I'm getting all NaN's for xmax and xmin except the very first and the last?

I shouldn't have any NaN's, isn't that correct?

f1 is a triangular wave so it does not have any voids in the function?

Guillaume
on 26 Jun 2015

You should have NaNs for any y value for which there is no f value. I expect there are plenty of them. I don't have the Fuzzy Logic Toolbox so I can't check how it generates your f, but another reason why you'd have some NaN is that a 0.35 in your f may not be exactly the same 0.35 as in your y. One might be 0.350000000...00001 and the other 0.34999...999999999 which matlab will display the same.

To fix this, you can change the find condition to

indices = find(abs(f-y(yiter)) < 1e-10); %or whatever tolerance you want

Sign in to comment.

Answer by Jan
on 24 Jun 2015

There are no voids in f1, but you cannot assume, that there are values, which are exactly 0.01 etc. Remember that the value of f1 might be 0.0099999999999999 or any other value, which is very near to 0.01.

If you leave the idea of searching for exact identify, but search for intervals, the problem is solved directly by histc or histcounts (depending on the Matlab version you are using).

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 5 Comments

## Katalin (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/224948-getting-min-max-of-a-function-for-different-y-s#comment_293919

## soloby (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/224948-getting-min-max-of-a-function-for-different-y-s#comment_293980

## Guillaume (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/224948-getting-min-max-of-a-function-for-different-y-s#comment_293997

## soloby (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/224948-getting-min-max-of-a-function-for-different-y-s#comment_294003

## soloby (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/224948-getting-min-max-of-a-function-for-different-y-s#comment_294013

Sign in to comment.