Bonjour à tous,

Mon problème général est d'obtenir, l'interpolation (ici bilinéaire) d'un fond marin en tout point, à l'aide de deux matrices orthonormées X et Y et ma matrice fond Z.

Pour cela, il faut tout d'abord que je localise où le point que je veux interpoler se trouve par rapport à mes matrices coordonnées.

Voici le début de mon script avec les détails :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%INTERPZ is a function of interpolation in a cell.
%   Xray and Yray are matrice of coordonate of the chosing point in (i,j)
%   X,Y,Z are your grid in 3D in which the interpolation is made.
%   zinterp is your interpolate value between your four points defined by
%   (Xray,Yray) in (i,j), with the date X,Y,Z.
%
%    a(ip-1,jp-1) ________   b(ip-1,jp)
%                    |            |
%                    |            |
%                    | *(i,j)     |
%    d(ip,jp-1)   |_______ _|  c(ip,jp)
 
% Cell location
 
jp=2; % "jp=j+1"
while X(1,jp) < Xray(i,j)
    jp=jp+1;
end
 
ip=2; % "ip=i+1"
while Y(ip,1) < Yray(i,j)
    ip=ip+1;
end
Le problème de ces while est que cela ne marche pas quelque fois sur les bords, en particulier (et je ne sais pas pourquoi) quand mes matrices bathymétriques (des fonds) ne sont pas carrés...


Auriez-vous une idée pour trouver où un point est par rapport aux matrices X et Y ?

Merci de vos réponses !

PS: pour X et Y, on peut prendre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
x=0:dx:1000;
y=0:dy:1000;
[X,Y]=meshgrid(x,y);