Bonjour à tous,
j'ai besoin de mettre en forme des données expérimentales pour en créer une cartographie 3D.
Je m'explique, j'ai 3 données X, Y et Z que j'importe depuis un fichier Excel. X, Y et Z sont tous les trois des vecteurs colonnes.
D'habitude, pour ce genre de chose, mon code est du type :
Et ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 clc; clear all; excel_name = 'fichier.xls'; Z = xlsread(excel_name,'E1:E20'); Y = xlsread(excel_name,'D1:D20').'; X = xlsread(excel_name,'B1:B20'); Y_sorted = sort(Y); X_sorted = sort(X); Z_calcul = griddata(X,Y,Z,X_sorted,Y_sorted); figure,mesh(X_sorted,Y_sorted,Z_calcul)
Ce que j'aurai souhaité, c'est utiliser la fonction interp2 mais le "souci" c'est qu'il faut que les données soient monotones. En utilisant, la fonction interp2 avec les données telles quelles :
je me retrouve avec un joli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Z_calcul = interp2(X,Y.',Z,X_sorted,Y_sorted);
J'ai lu la doc de la fonction meshgrid mais je n'en comprends pas le fonctionnement...X and Y must be monotonic vectors or matrices produced by MESHGRID.
Quelqu'un pourrait-il m'aiguiller svp ?
D'avance merci !
Edit : en essayant ce bout de code :
J'obtiens de nouveau une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Xi,Yi,Zi] = meshgrid(X,Y,Z); Z_calcul = interp2(Xi,Yi,Zi,X_sorted,Y_sorted);
Il me semble pourtant que j'ai fait ce qui est demandé, non ?X and Y must be matrices produced by MESHGRID. Use TriScatteredInterp instead of INTERP2 for scattered data.
Partager