How to set the lower bound of extrapolation?

Hi!
Is it possible to set a lower bound for extrapolating using the interp2 function? I am dealing with nitrogen concentrations, and a negative concentration cannot exist. However, currently the extrapolation results have negative values. So I do not want the extrapolation to go less than 0. I do not desire to set an upperbound limit.
Thanks! George

3 Comments

Is ‘interp2’ producing below-zero values in its interpolation or in its extrapolation? (You have more control over its extrapolation range than interpolation.) What 'method' are you using with ‘interp2’?
The interpolation and extrapolation are both producing below 0 values. Thanks!
yes, its is possible to set a lower bound.
you will need to find the value of c from the linear discriminant model.
extrapolating will be (c1+c2)/100*values less than 30,
find the percentage value of extrapolation, add the (percentage value to the value of extrapolation:c3).
(c1+c2)/c3*fill_value.

Sign in to comment.

 Accepted Answer

You could set the boundary limit manually after the calculation like this.
concentration(concentration < 0) = 0;
I create a function that does just this.
function value = clip(value, clip, type)
%CLIP Clip values
% Adjust values in a vector such that no value extends beyond the
% specified type.
%
% Inputs:
% Clip min and max together:
% value (vector - 1 by x)
% clip (vector - 1 by x > 1)
% Clip min and max seperately
% value (vector - 1 by x)
% clip (scalar)
% type (char - min/max)
%
% Outputs:
% value - The clipped values
if length(clip) > 1
value(max(clip) < value) = max(clip);
value(value < min(clip)) = min(clip);
else
switch lower(type)
case 'min'
value(value < clip) = clip;
case 'max'
value(clip < value) = clip;
end %switch
end
end %clip
And you can use it like this.
concentration = clip(concentration, 0, 'min');
But it is more useful when you want to clip on both ends of the spectrum.
concentration = clip(concentration, [0, 100]);
If you have more than 2 values in the boundary, it choose the min and max as the clipping boundaries.

2 Comments

concentration(concentration < 0) = 0;
can also be formulated as
concentration = max(0, concentration);
D G
D G on 17 Jul 2012
Edited: D G on 17 Jul 2012
So it can, hilarious! It seems a little backwards. Why wouldn't that be min, and the reverse be max?

Sign in to comment.

More Answers (0)

Categories

Find more on Random Number Generation in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!