1 |
function [varargout]=MITprof_wrapper(varargin); |
2 |
% MITPROF_WRAPPER applies encoded operation to MITprof variables |
3 |
% |
4 |
% [myout]=gcmfaces_phitheta(myprof,myop) applies operation specified |
5 |
% by myop.op_name ('nanmean' by default; options listed below) to |
6 |
% myprof variables listed by suffix in myop.op_vars (all those of |
7 |
% length myprofmyop.np by default). |
8 |
% |
9 |
% [myout]=gcmfaces_phitheta(K) obtains myprofmyop from global variable, |
10 |
% subsets according to K (1:myprofmyop.np by default), and returns |
11 |
% the result in vector form. This approach allows bootstrapping. |
12 |
% |
13 |
% myop options: |
14 |
% - opName='mean','std', or 'cycle' |
15 |
% - opVars='T', 'S', or [], or a list {'T','S'} |
16 |
% |
17 |
% Example: |
18 |
% |
19 |
% example_MITprof; global myprofmyop; disp(myprofmyop); |
20 |
% |
21 |
% myop.op_name='cycle'; myop.op_tim=[0:7:365]; |
22 |
% myop.op_vars={'prof_T','prof_Tclim'}; |
23 |
% myprof=myprofmyop; |
24 |
% |
25 |
% [myout]=MITprof_wrapper(myprof,myop); |
26 |
% figure; imagescnan(myout'); colorbar; |
27 |
% |
28 |
% K=[1:myprofmyop.np]; myout = bootstrp(100, @MITprof_wrapper,K); |
29 |
% figure; z=cell2mat(myout); z=z(:,10:myprof.nr:end); hist(z,20); |
30 |
% |
31 |
|
32 |
%% |
33 |
|
34 |
if nargin<=1; |
35 |
global myprofmyop; |
36 |
myprof=myprofmyop; |
37 |
myop.op_name=myprofmyop.op_name; |
38 |
myop.op_vars=myprofmyop.op_vars; |
39 |
if isfield(myprofmyop,'op_tim'); myop.op_tim=myprofmyop.op_tim; end; |
40 |
end; |
41 |
|
42 |
if nargin==1; |
43 |
myind=varargin{1}; |
44 |
end; |
45 |
|
46 |
if nargin==2; |
47 |
myprof=varargin{1}; |
48 |
myop=varargin{2}; |
49 |
end; |
50 |
|
51 |
if isempty(whos('myind')); |
52 |
myind=[1:myprof.np]; |
53 |
end; |
54 |
|
55 |
if isempty(myprof)|isempty(myop); |
56 |
error('incorrect input specifications'); |
57 |
end; |
58 |
|
59 |
%% |
60 |
|
61 |
[myprof]=MITprof_subset(myprof,'list',myind); |
62 |
|
63 |
%% |
64 |
|
65 |
if strcmp(myop.op_name,'mean'); |
66 |
for vv=1:length(myop.op_vars); |
67 |
tmp1=getfield(myprof,myop.op_vars{vv}); |
68 |
varargout{vv}=nanmean(tmp1,1); |
69 |
end; |
70 |
end; |
71 |
|
72 |
if strcmp(myop.op_name,'cycle'); |
73 |
tim=myprof.prof_date-datenum([2002 1 1]); |
74 |
tim=mod(tim,365); dt=median(diff(myop.op_tim)); |
75 |
nt=length(myop.op_tim); nv=length(myop.op_vars); |
76 |
for vv=1:nv; |
77 |
tmpIn=getfield(myprof,myop.op_vars{vv}); |
78 |
tmpOut=NaN*repmat(tmpIn(1,:),[nt 1]); |
79 |
for tt=1:nt; |
80 |
t0=mod(myop.op_tim(tt)-dt/2,365); |
81 |
t1=mod(myop.op_tim(tt)+dt/2,365); |
82 |
if t1>t0; ii=find(tim<=t1&tim>t0); |
83 |
else; ii=find(tim<=t1|tim>t0); |
84 |
end; |
85 |
tmp1=nanmean(tmpIn(ii,:),1); |
86 |
tmp2=sum(~isnan(tmpIn(ii,:)),1); |
87 |
tmp1(~tmp2)=NaN; |
88 |
tmpOut(tt,:)=tmp1; |
89 |
end; |
90 |
varargout{vv}=tmpOut; |
91 |
end; |
92 |
end; |
93 |
|
94 |
%% |
95 |
|
96 |
if nargin<=1; |
97 |
varargout{1}=varargout; |
98 |
end; |
99 |
|