Dans l'objectif des TPE, et d'un sujet sur les forces exercées sur un avion, j'utilise Matlab pour modéliser le déplacement de l'aéronef suivant des paramètres de vol variables. Cependant, pour la partie concernant le calcul de la masse volumique de l'air (dépendant de la température, qui dépend elle-même de l'altitude et de la latitude (l'épaisseur des couches de l'atmosphère diffèrent en fonction de la position sur le globe)), il me faut intégrer une surface en 3D, dont les entrées sont justement la latitude et l'altitude, et la sortie correspond à la température. J'ai malheureusement quelques difficultés concernant l'utilisant de la fonction, dont j'ai peu l'habitude de me servir.
J'ai la position des points où la surface varie (où elle n'est plus plate). La méthode d'interpolation est en effet linéaire. Que dois-je alors entrer dans la Table data ?
Aussi, j'aimerais pouvoir visualiser la surface, mais avec quel outil ?
j'essai de faire la meme chose mais sans avoir besoin de visualiser graphiquement.
Connaissez vous une fonciton MatLab pour fitter despoints en une surface ?
27/06/2007 - 08h56
ketchupi
Date d'inscription
octobre 2005
Messages
914
Re : Surface 3D sous Matlab
Bonjour,
je pense pouvoir vous aider, mais je n'ai pas bien compris le sens de votre question. Un schéma serait le bienvenu... ou la forme des données d'entrées... parce que ce n'est pas encore très clair.
++
27/06/2007 - 15h12
spoutnix
Date d'inscription
juin 2007
Âge
27
Messages
202
Re : Surface 3D sous Matlab
En meme temps la variation de densité de l'atmosphere due a la latitude et a la longitude est quand meme assez minime... Elle existe certainement, mais comparée aux autres paramètres, c'est un peu chercher les ennuis.
D'une part on connait des lois comportementales de la variation de masse volumique de l'atmosphere qui sont des modeles plus ou moins expérimentaux et qui sont relativement peu précis (suffisemment pour faire des calculs approchant la réalité). Je ne comprend pas l'utilité de regarder la modification de densité en fonction de la longitude et de la latitude dont la valeur est bien en dessous de la précision du modèle.
Prend tu en compte le rechauffement (donc variation de densité !) de l'air au passage de l'avion (qui dépend de la géométrie de l'avion), la variation de densité due aux phénomènes météorologiques ainsi que le vol des mouettes ?
En plus la variation de force (qui ne voudras rien dire face a la précision du modele) te donnera un ordre de grandeur bien négligeable par rapport à la variation de poids de l'avion du à la baisse du niveau de kérosene ou par rapport aux irrégularités géométriques de l'avion (boulon, morceau de métal, inclinaison des volets, variation entre le dessin théorique de l'avion et la réalité).
Bref c'est un peu sortir la carabine pour tuer une mouche, tu risques de passer a coté...
27/06/2007 - 15h38
sayag
Date d'inscription
juin 2007
Âge
23
Messages
4
Re : Surface 3D sous Matlab
Ben en fait moi c'est pas du tout pour une etude physique.
C'est pour faire une sorte de mini editeur 3D :
j'ai entre 3 et +++ points 2D qui contiennent une grandeur, imaginez que ce sont des arbre, j'ai donc leur position XY, et leur taille.
Je veux envoyer ces infos a MatLab pour qu il me retourne la surface de la foret, en supposanr bien sur que les tailles des arbres sont "regulieres"...
C'est un peu entre le fit de ligne (curve, polynomial...) et le tracé de surface 3d (surf).
Mon objectif, c'est de pouvoir bouger sur une application WinForm (Csharp, visual studio) mes trois arbres par exemple, et envoyer en boucle leurs positions a matlab pour quil me renvoit sans cesse le nouvel apercu de la foret...
J'ai tapé ca dans mon code pour l'instant mais ca ne va pas bien loin :
Code:
IDictionaryEnumerator fff = arbreList.GetEnumerator();
while (fff.MoveNext())
{
Arbre arb = (Arbre)objectList.Values;
if(pathAnchoring.IsVisible(arb.getPoint()) && arb.IsAlive())
{
int i = arb.getXPos();
int j = arb.getYPos();
int k = arb.getTaille();
foretMat[i][j]=k;
}
}
MLApp.MLAppClass matlab = new MLApp.MLAppClass();
matlab.IMLApp_PutFullMatrix("a", "base", songMat, songMat);
matlab.IMLApp_Execute(Application.StartupPath + "\\Interpolation.m");
Array mrresult = new int[640][];
Array miresult = new int[640][];
matlab.IMLApp_GetFullMatrix("a", "base", ref mrresult, ref miresult);
}
27/06/2007 - 23h06
Ryuujin
Date d'inscription
février 2005
Localisation
Grignon
Messages
4 631
Re : Surface 3D sous Matlab
perso j'utilise tpaps puis fnplt, et je récupère une matrice ensuite.
Je veux utiliser interp2 pour fitter les dimensions z de points z=f(x,y).
Je me suis renseigné sur cette méthode, mais d'après ce que j'ai lu,
il faut déjà bien remplir une matrice (xi, yi) avec des valeurs zi, et ensuite on peut fitter entre 2 points.
D'après la doc, par exemple on rempli tous les points (1,1) (1,2) (2,1) ...
et on peut fitter pour obtenir le point (2.3, 4.8)
-------
Ce que je voulais faire en utilisant cette fonction, c'est fitter 3 points par exemple, oui que 3, pour obtenir une surface entière.
Donc si je fittais 2 points j'obtenais un plan...
Est ce qu'il y a une leilleure fonction ?
Ou est ce que je vais devoir faire un tas d iterations, en remplissant tous les autres points que mes 3 points par Zéro, et en fittant, fittant, fittant...
Un grand merci pour vos réponses.
Henry
sayag est en ligne Envoyer un message privé Modifier/Supprimer le message
17/07/2007 - 14h06
kkneo
Date d'inscription
mars 2007
Messages
70
Re : Surface 3D sous Matlab
Envoyé par sayag
bonjour,
j'essai de faire la meme chose mais sans avoir besoin de visualiser graphiquement.
Connaissez vous une fonciton MatLab pour fitter despoints en une surface ?
Je suis pas sur d'avoir bien compris
Ben essaie de regarder du coté de griddata il y a plusieurs choses dont une triangulation de delaunay avec une interpolation linéaire ou cubique dans les triangles.
Si tu veux juste afficher ta surface et ploter tes points dessus tu fais un surf pour la surface et un plot3 pour afficher les points