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 :

interpolation d'une courbe 3d


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Par défaut interpolation d'une courbe 3d
    Bonjour,

    je possede une matrice xyz composée de 3 colonnes x, y et z.
    Je souhaiterai tracer tous mes points et obtenir une surface composée des points de ma matrice.

    J'ai trouvé cette exemple sur le site de matlab.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [X,Y] = meshgrid(-3:.25:3);
    Z = peaks(X,Y);
    [XI,YI] = meshgrid(-3:.125:3);
    ZI = interp2(X,Y,Z,XI,YI);
    mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)
    hold off
    axis([-3 3 -3 3 -5 20])
    J'ai voulu remplacé par mes variables.
    A la premiere ligne, j'ai mis
    Matlab me renvoie un probleme de mémoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       ??? Maximum variable size allowed by the program is exceeded.
     
    Error in ==> meshgrid at 44
        xx = xx(ones(ny, 1),:);
     
    Error in ==> test7 at 3
    [X,Y] = meshgrid(x,y);
    Mes matrices x et y sont de dimension:164953*1 chacune
    Je suis un peu bloqué

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Par défaut
    j'ai reduit la taille de ma matrice. meshgrid continue de bloquer avec la taille.

    Existe t il une autre methode pour tracer une surface définie par les points d'une matrice 3d?

    merci

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Bonjour,

    164953 données dans chaque direction x et y, ça fait à peu près 30 milliards de points . AS-tu réellement besoin d'autant de points? Pour commencer si tu faisais des tests avec quelques millions (voir centaine de millier) de points pour voir le résultat?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Par défaut
    j'étais passé a 22640 points dans ma réduction.

    j'ai décidé de réécrire mon code et de spécifier les paramètres manuellement pour meshgrid:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [X,Y] = meshgrid(200:0.1:400, -30:0.1,1); %X et Y sont de dimension 31*2001
    Z=z; % Z est de dimension 22644x1
    [XI,YI] = meshgrid(200:0.05:400, -30:0.05,1); % XI et YI sont de dimension 31x4001
    ZI = interp2(X,Y,Z,XI,YI);
    quand j'execute mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> interp2
    When Z is a vector, X and Y must also be vectors.
    X et Y doivent donc etre des vecteurs mais générés par meshgrid.
    Meshgrid ne genere que des array d'apres la doc?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Il y a quelques points qui ne sont pas clairs :
    • dans ton titre, tu parles de tracer une courbe, et dans ton post tu parles d'une surface??
    • Si tu avais uniquement 22640 points qui définissent ta surface, meshgrid aurait dû marcher, à moins que tu ais très très peu de ram sur ton ordi...
    • pourquoi veux-tu passer par une interpolation de tes données?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. interpolation d'une courbe avec FFT
    Par takout dans le forum Traitement du signal
    Réponses: 31
    Dernier message: 09/05/2013, 16h17
  2. interpolation d'une courbe
    Par foufi86 dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/10/2011, 21h44
  3. Réponses: 4
    Dernier message: 06/12/2007, 16h17
  4. Interpoler une courbe à partir d'une image
    Par killerfrog dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/03/2007, 22h44
  5. Interpolation d'une courbe
    Par ramrouma dans le forum Signal
    Réponses: 2
    Dernier message: 12/01/2007, 12h35

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