"Linear" algorithm for griddedInterpolant

6 vues (au cours des 30 derniers jours)
David Epstein
David Epstein le 23 Juil 2018
Commenté : David Epstein le 23 Juil 2018
Try this
M=rand(2,3);
disp(M);
F=griddedInterpolant(M);
disp([F(1,1),F(1.5,2.5),F(2,3),F(50,19),F(-50,19)]);
What is the mysterious algorithm used by Mathworks that gives the two final answers? I need an F with predictable answers.
  1 commentaire
Adam
Adam le 23 Juil 2018
What do you mean by 'predictable'? You get the same answer every time for the same inputs (i.e. obviously not creating a random input every time).
(50,19) and (-50,19) are both miles away from the input matrix though so that is a lot of extrapolation needed to get there. I don't see what is especially unpredictable about it though other than the fact that extrapolating that far from your data will always be so inaccurate as to be totally unreliable.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 23 Juil 2018
Modifié(e) : Jan le 23 Juil 2018
Of course the output is predictable and even exactly defined as expected. If you extrapolate the values, the marginal linear segments are expanded. This is the intuitive behavior. So what exactly is the problem with griddedInterpolant? What do you expect instead?
The 'ExtrapolationMethod' is explained here: doc griddedInterpolant: Extrapolation (link)
  3 commentaires
Steven Lord
Steven Lord le 23 Juil 2018
The easiest way to have the result of the extrapolation be zero is to specify that you don't want extrapolation then replace the missing values in the result of evaluating the griddedInterpolant (represented as NaN) with 0 using fillmissing or isnan.
David Epstein
David Epstein le 23 Juil 2018
Default imrotate works differently from default griddedInterpolant. imrotate gives black corners on a 45 degree rotation of a square graphics matrix, whereas, if you use griddedInterpolant, the corners, after rotation, will probably be brighter than anywhere else. The difference remains when you instruct both functions to use the linear method. The documentation has nothing to say about this, which is what puzzled me, and explains why I asked on the forum.
On another point, my objection to your method is that I think it produces a discontinuous function on the plane, anathema to a mathematician. Padding with zeros before applying griddedInterpolant produces a continuous function. The amount of padding needed depends on the interpolation algorithm.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by