1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
function[Grille_Lab3mod]=delaunay(Grille_Lab2,dataset)
% intitialisation des données
x2 = dataset(:,1);
y2 = dataset(:,2);
x3=zeros(48,1);
y3=zeros(48,1);
x4=zeros(48,1);
y4=zeros(48,1);
datasetz=[Grille_Lab2(:,1);Grille_Lab2(:,2);Grille_Lab2(:,3);Grille_Lab2(:,4);Grille_Lab2(:,5);Grille_Lab2(:,6);Grille_Lab2(:,7)];
for k=1:48
for i=1:48 % initialisation de la matrice x3 et y3
x3(i,1)=x2(i,1);
y3(i,1)=y2(i,1);
x4(i,1)=x2(i,1);
y4(i,1)=y2(i,1);
z2(i,1)=datasetz(i,1);
end
% coordonnées de l'élément supprimé
xsupp=x2(k,1)
ysupp=y2(k,1)
zsupp=datasetz(k,1)
for i =k:48 %48 on enlève à chaque fois un élément de la matrice x3, y3 depuis la matrice x2,y2
x3(i,1)=x2(i+1,1);
y3(i,1)=y2(i+1,1);
z2(i,1)=datasetz(i+1,1);
end
tri = delaunay(x3,y3); % on exécute la triangulation de Delaunay avec le point supprimé
% figure;
%triplot(tri,x3,y3);
%trimesh(tri,x3,y3,z2);
%hold all;
% On s'apprete ici à interpoler l'altitude du point surpprimé
if xsupp>1 & xsupp<7 & ysupp<7
T = tsearch(x3,y3,tri,xsupp,ysupp);
h(1,1)= x3(tri(T,1),1);
h(2,1)= y3(tri(T,1),1);
h(3,1)=Grille_Lab2(h(1,1),h(2,1));
h(1,2)= x3(tri(T,2),1);
h(2,2)= y3(tri(T,2),1);
h(3,2)=Grille_Lab2(h(1,1),h(2,1));
h(1,3)= x3(tri(T,3),1);
h(2,3)= y3(tri(T,3),1);
h(3,3)=Grille_Lab2(h(1,1),h(2,1));
for f=1:3 % calcul des paramètres de l'équation du plan
matA(f,1)=1;
matA(f,2)=h(1,f);
matA(f,3)=h(2,f);
matF(f,1)=h(3,f);
end
matx=inv(matA)*matF; % les paramètres sont sotckés dans la matrice 'matx'
Z=matx(1,1)+matx(2,1)*xsupp+matx(3,1)*ysupp; % Calcul de la valeur interpolée.
diff(xsupp,ysupp)= zsupp-Z;% difference entre la valeur originale et la valeur interpolée.
matZ(xsupp,ysupp)=Z; % on stocke les valeurs interpolées dans une matrice
end
end
% Sélection des points à supprimer
for i=2:6
absdiff(i-1,:)=abs(diff(i,:));
Grille_Lab2mod(i-1,:)=Grille_Lab2(i,:);
end
Grille_Lab3mod=[Grille_Lab2mod(:,2),Grille_Lab2mod(:,3),Grille_Lab2mod(:,4),Grille_Lab2mod(:,5),Grille_Lab2mod(:,6)];
absdiff2=[absdiff(:,2),absdiff(:,3),absdiff(:,4),absdiff(:,5),absdiff(:,6)]
for s=1:10 % 10= nombre d'éléments à supprimer
[C,I]= min(absdiff2);
[D,V]= min(C);
for j=1:5
if (C(j)~=D)
E=I(V);
F=V;
Grille_Lab3mod(E,F)=NaN;
absdiff2(E,F)=NaN;
end
end
end |
Partager