How to set the lower bound of extrapolation?

10 visualizaciones (últimos 30 días)
George McFadden
George McFadden el 16 de Jul. de 2012
Comentada: charles alexander el 29 de Jul. de 2021
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 comentarios
George McFadden
George McFadden el 30 de Oct. de 2012
The interpolation and extrapolation are both producing below 0 values. Thanks!
charles alexander
charles alexander el 29 de Jul. de 2021
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.

Iniciar sesión para comentar.

Respuesta aceptada

D G
D G el 16 de Jul. de 2012
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 comentarios
Walter Roberson
Walter Roberson el 17 de Jul. de 2012
concentration(concentration < 0) = 0;
can also be formulated as
concentration = max(0, concentration);
D G
D G el 17 de Jul. de 2012
Editada: D G el 17 de Jul. de 2012
So it can, hilarious! It seems a little backwards. Why wouldn't that be min, and the reverse be max?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Preprocessing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by