IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

TriScattered : comment l'utiliser ?


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut TriScattered : comment l'utiliser ?
    Bonjour,

    Je souhaite interpoler un champ 3D, noté V, qui est initialement discrétisé sur une grille initiale non régulière en altitude z mais régulière en x et y la longitude et la latitude.
    J'ai initialement deux vecteurs et 2 matrices pour cela :
    longitude : x (taille nx,1,1)
    latitude : y (taille ny,1,1)
    altitude : z (taille nx,ny,nz)
    champs : V (taille nx,ny,nz)

    Je souhaite interpoler ce champs V sur une nouvelle grille : x, y et zbis. La longitude et la latitude n'auront donc pas changé mais l'altitude sera maintenant discrétisée de manière régulière.

    En cherchant comment faire, j'ai trouvé TriScattered. Mais je n'arrive pas à déterminer comment l'utiliser dans mon cas...

    Dans l'exemple donné par matlab, le calcul se fait à partir de vecteurs donc je pensais créer quatre nouveaux vecteurs X1,Y1,Z1,V1 de manière à ce la ligne N de chaque vecteur permette de représenter de x,y,z,V... de manière à avoir "V1 = Z1(X1,Y1)"... (pas très sûr d'être clair... désolé)

    Par la suite j'ai pensé faire quelque chose comme cela, mais cela ne semble pas fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Znew = [0:0.25:1];
    F = TriScatteredInterp(X1,Y1,Z1,V1);
    [xi yi zi] = meshgrid(x',y',Znew);
    Vbis = F(xi,yi,zi,V1);
    Pourriez-vous m'aider ? Je tourne en rond...

    Merci beaucoup d'avance !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Étant données les dimensions de départ, la première étape va consister à avoir les 4 tableaux de même dimension (nx,ny,nz) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    X1 = repmat(longitude(:), [1 ny, nz]);
    Y1 = repmat(latitude(:).', [nx, 1, nz]);
    Z1 = altitude;
    V1 = champs;
    qu'il suffit alors de rentrer dans TriScatteredInterp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F = TriScatteredInterp(X1(:),Y1(:),Z1(:),V1(:));
    puis comme tu l'as fait générer la nouvelle grille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Znew = 0:0.25:1; % crochets inutiles
    [xi yi zi] = meshgrid(longitude,latitude,Znew);
    et obtenir les valeurs interpolées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vbis = F(xi,yi,zi); % pas de V1 : il est déjà pris en compte dans le constructeur de F
                        % on rentre seulement les coordonnées de la nouvelle grille

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/02/2005, 14h39
  2. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  3. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37
  4. [scrapbook] comment l'utiliser ?
    Par Didier 69 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 16/04/2004, 17h28
  5. [INDY] -> IdIdentServer comment l'utiliser ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 9
    Dernier message: 06/08/2003, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo