1 |
gforget |
1.1 |
function [fld0]=convert2arctic(fld00,varargin); |
2 |
|
|
|
3 |
|
|
if fld00.nFaces==1; fld00=convert2cube(fld00); end; |
4 |
|
|
|
5 |
|
|
n1=size(fld00{1},1); |
6 |
|
|
n2=size(fld00{1},2); |
7 |
|
|
n3=size(fld00{1},3); |
8 |
|
|
n4=size(fld00{1},4); |
9 |
|
|
|
10 |
|
|
f1=flipdim(permute(fld00{1},[2 1 3 4]),2); |
11 |
|
|
f2=fld00{2}; |
12 |
|
|
f3=fld00{3}; |
13 |
|
|
f4=fld00{4}; |
14 |
|
|
f5=flipdim(permute(fld00{5},[2 1 3 4]),1); |
15 |
|
|
if isempty(fld00{3}); f3=NaN*zeros(n1,n1,n3,n4); end; |
16 |
|
|
|
17 |
|
|
fld0=NaN*zeros(n2*2+n1,n2*2+n1,n3,n4); |
18 |
|
|
fld0(1:n2,n2+1:n2+n1,:,:)=f1; |
19 |
|
|
fld0(n2+1:n2+n1,n2+1:n2+n1,:,:)=f3; |
20 |
|
|
fld0(n2+n1+1:end,n2+1:n2+n1,:,:)=f4; |
21 |
|
|
fld0(n2+1:n2+n1,1:n2,:,:)=f2; |
22 |
|
|
fld0(n2+1:n2+n1,n2+n1+1:end,:,:)=f5; |
23 |
|
|
|
24 |
|
|
nn=round(n2/2); |
25 |
|
|
nn2=n2-nn+1; nn1=n2*2+n1-nn2+1; |
26 |
|
|
fld0=fld0(nn2:nn1,nn2:nn1); |
27 |
|
|
|
28 |
|
|
if nargin==2; doFill=varargin{1}; else; doFill=1; end; |
29 |
|
|
if doFill; |
30 |
|
|
|
31 |
|
|
if n3>1; fprintf('not implemented yet\n'); return; end; |
32 |
|
|
%fill the corners of fld0: |
33 |
|
|
warning('off','MATLAB:interp1:NaNinY'); |
34 |
|
|
for pp=1:4; |
35 |
|
|
%do the interpolation in polar coordinates... |
36 |
|
|
ii=[0:nn]'*ones(1,nn+1); jj=ones(nn+1,1)*[0:nn]; |
37 |
|
|
aa=angle(ii+i*jj); bb=min(abs(ii+i*jj),nn); |
38 |
|
|
% |
39 |
|
|
v0=fld0(end-nn:end,end-nn:end); |
40 |
|
|
k1=find(aa==0); k2=find(aa>0&aa<=pi/4); v0(k2)=interp1(bb(k1),v0(k1),bb(k2)); |
41 |
|
|
k1=find(aa==pi/2); k2=find(aa>pi/4&aa<=pi/2); v0(k2)=interp1(bb(k1),v0(k1),bb(k2)); |
42 |
|
|
fld0(end-nn+1:end,end-nn+1:end)=v0(2:end,2:end); |
43 |
|
|
fld0=sym_g(fld0,5,0); |
44 |
|
|
% |
45 |
|
|
end; |
46 |
|
|
warning('on','MATLAB:interp1:NaNinY'); |
47 |
|
|
|
48 |
|
|
end;%if doFill; |
49 |
|
|
|