1 |
gforget |
1.1 |
function [list_profiles2]=netcdf_ecco_GenericgridLocateCell(x0,y0,x_all,y_all); |
2 |
|
|
|
3 |
|
|
x=ones([length(x_all) size(x0)]); for icur=1:length(x_all); x(icur,:,:)=x0; end; |
4 |
|
|
y=ones([length(x_all) size(x0)]); for icur=1:length(x_all); y(icur,:,:)=y0; end; |
5 |
|
|
|
6 |
|
|
x_all2=zeros([length(x_all) size(x0,1) 1]); for icur=1:length(x_all); x_all2(icur,:,:)=x_all(icur); end; |
7 |
|
|
y_all2=zeros([length(y_all) size(x0,1) 1]); for icur=1:length(y_all); y_all2(icur,:,:)=y_all(icur); end; |
8 |
|
|
z_all2=zeros(size(x_all2)); |
9 |
|
|
|
10 |
|
|
for icur=1:size(x0,2); |
11 |
|
|
x=circshift(x,[0 0 1]); y=circshift(y,[0 0 1]); |
12 |
|
|
v1x=x(:,:,1)-x_all2(:,:,1); v1y=y(:,:,1)-y_all2(:,:,1); v2x=x(:,:,2)-x_all2(:,:,1); v2y=y(:,:,2)-y_all2(:,:,1); |
13 |
|
|
tmp1=find(v2x.*v2x+v2y.*v2y==0|v1x.*v1x+v1y.*v1y==0); v1x(tmp1)=NaN; v1y(tmp1)=NaN; v2x(tmp1)=NaN; v2y(tmp1)=NaN; |
14 |
|
|
g_acos=acos( ( v1x.*v2x+v1y.*v2y )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ); |
15 |
|
|
g_sin= ( v1x.*v2y-v1y.*v2x )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ; |
16 |
|
|
z_all2=z_all2+g_acos.*sign(g_sin); |
17 |
|
|
end |
18 |
|
|
|
19 |
|
|
list_profiles=find(abs(z_all2-2*pi)<pi/16|abs(z_all2-pi)<pi/16|isnan(z_all2)); |
20 |
|
|
list_profiles2=zeros(size(x_all2)); list_profiles2(list_profiles)=1; |
21 |
|
|
|
22 |
|
|
|
23 |
|
|
|