Cubic/Bicubic interpolation

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
FUFURoux
Messages: 3
Enregistré le: 27 Jan 2021, 22:10

Cubic/Bicubic interpolation

par FUFURoux » 27 Jan 2021, 22:27

Bonjour,

Je cherche a implémenter une interpolation cubic en matlab dans un premier temps.
Pour ce faire, j'ai trouvé ce site qui explique pas mal de chose https://www.paulinternet.nl/?page=bicubic

J'ai donc écrit deux fonctions :

Code: Tout sélectionner
function interpolateDatas = cubicInterpolate(p0,p1,p2,p3,xTarget)

    xvect   = [-1,0,1,2];
    P1 = [p0,p0,p1,p2,p3,p3] ;

    if xTarget < xvect(2)

        xrequiered = xTarget - xvect(1);
        Px = P1(1:4);

    elseif( xTarget >=  xvect(2) && xTarget < xvect(3) )

        xrequiered = xTarget ;
        Px = P1(2:5);
       
    elseif xTarget >= xvect(3)

        xrequiered = xTarget - 1;
        Px = P1(3:6);

    end
    interpolateDatas = cInterpolate(Px,  xrequiered);

end


et

Code: Tout sélectionner
function f = cInterpolate(p, x)

    p0 = p(1);
    p1 = p(2);
    p2 = p(3);
    p3 = p(4);
   
    f = p1 + 0.5 * x.*(p2 - p0 + x.*(2.0*p0 - 5.0*p1 + 4.0*p2 - p3 + x.*(3.0*(p1 - p2) + p3 - p0)));
   
end


Cela me donne de bon résultat a en croire mes plots.

Malheureusement je ne comprends pas comment faire pour utiliser l'interpolation en dehors de la plage 0:1.
Si j'en crois les explications il faut obligatoirement que la valeur interpolé soit entre 0 et 1. cependant, moi je souhaite pouvoir interpoler n'importe quelle valeur dans un vecteur.

Comment faire ?

Je ne sais pas si j'ai été assez clair, laissez moi savoir si vous avez besoin de précisions.

La finalité serait d'avoir une fonction qui prend en entré un vecteur X et Y et qui a partir de n’importe quelle xi dans la plage de donnée de X, sort une valeur interpoler yi. A l'image de la fonction native de matlab, "interp1"

Cordialement



GaBuZoMeu
Habitué(e)
Messages: 6019
Enregistré le: 05 Mai 2019, 10:07

Re: Cubic/Bicubic interpolation

par GaBuZoMeu » 28 Jan 2021, 11:17

Bonjour,

Faut-il comprendre ce que tu veux comme ça :

Une procédure qui prend en entrée les points d'interpolation avec , les valeurs fixées et pour chaque nouveau point donne la valeur en du polynôme d'interpolation de Lagrange (l'unique polynôme de degré tel que pour ) ?

FUFURoux
Messages: 3
Enregistré le: 27 Jan 2021, 22:10

Re: Cubic/Bicubic interpolation

par FUFURoux » 28 Jan 2021, 22:12

Bonjour,

Oui cela semble être cela.
En clair je veux interpoler n'importe quelle valeur yt de y a partir d'une valeur xt. Avec xt> x0 et xt<xn et tel que f(xt) = yt.
Ceci en connaissant préalablement un vecteur [x0 ...xn] et [y0...yn] tel que f(x)=y pour tout x appartement a [x0...xn]

En faite je veux faire comme une interpolation linéaire mais avec cubic. a l'aide du polynôme explicité dans la fonction cInterpolate.

cordialement

FUFURoux
Messages: 3
Enregistré le: 27 Jan 2021, 22:10

Re: Cubic/Bicubic interpolation

par FUFURoux » 07 Fév 2021, 20:31

Bonjour,

C'est bon j'ai trouvé al solution,
je pourrais envoyer mon code si quelqu'un est intéresse !


Cordialement

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 23 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite