1 |
function [MITprofSub]=MITprof_subset(MITprof,varargin); |
function [MITprofSub]=MITprof_subset(MITprof,varargin); |
2 |
|
% [MITprofSub]=MITprof_subset(MITprof,'PropertyName',PropertyValue,...) |
3 |
|
% load a subset of profiles from MITprof into MITprofSub |
4 |
|
% |
5 |
|
% if PropertyName = 'list' : PropertyValue contains the list of profiles |
6 |
|
% otherwise PropertyName = 'field' : selection on MITprof.prof_field, |
7 |
|
% range or unique value given in PropertyValue. |
8 |
|
% if PropertyName = 'list' is used, then it needs to be the first one. |
9 |
|
% |
10 |
|
% [MITprofSub]=MITprof_subset(MITprof,'list',1:50); |
11 |
|
% returns the 50th first profiles in MITprof |
12 |
% [MITprofSub]=MITprof_subset(MITprof,'depth',[50 150]); |
% [MITprofSub]=MITprof_subset(MITprof,'depth',[50 150]); |
13 |
% returns the subset of MITprof that has prof_depth>=50 and <150 |
% returns the subset of MITprof that has prof_depth>=50 and <150 |
14 |
% [MITprofSub]=MITprof_subset(MITprof,'depth',[50 150],'descr',platformName); |
% [MITprofSub]=MITprof_subset(MITprof,'depth',[50 150],'descr',platformName); |
19 |
|
|
20 |
nSub=(nargin-1)/2; |
nSub=(nargin-1)/2; |
21 |
for iSub=1:nSub; |
for iSub=1:nSub; |
22 |
eval(['prof_sub=MITprof.prof_' varargin{(iSub-1)*2+1} ';']); |
if ~strcmp('list',varargin{(iSub-1)*2+1}); |
23 |
range_sub=varargin{(iSub-1)*2+2}; |
eval(['prof_sub=MITprofSub.prof_' varargin{(iSub-1)*2+1} ';']); |
24 |
if strcmp('descr',varargin{(iSub-1)*2+1}); |
range_sub=varargin{(iSub-1)*2+2}; |
25 |
KK=find(strcmp(prof_sub,range_sub)); |
if strcmp('descr',varargin{(iSub-1)*2+1}); |
26 |
elseif strcmp('depth',varargin{(iSub-1)*2+1}); |
KK=find(strcmp(prof_sub,range_sub)); |
27 |
KK=find(prof_sub>=range_sub(1)&prof_sub<range_sub(2)); |
elseif length(range_sub)==2 & range_sub(1)<range_sub(2); |
28 |
|
KK=find(prof_sub>=range_sub(1)&prof_sub<range_sub(2)); |
29 |
|
elseif length(range_sub)==1; |
30 |
|
KK=find(prof_sub==range_sub); |
31 |
|
else |
32 |
|
error('MITprof_subset: wrong arguments'); |
33 |
|
end; |
34 |
else; |
else; |
35 |
KK=find(prof_sub>=range_sub(1)&prof_sub<range_sub(2)); |
KK=varargin{(iSub-1)*2+2}; |
36 |
|
prof_sub=[1:length(MITprofSub.prof_lon)]'; |
37 |
|
if iSub~=1; error('''list'' subset should come first'); end; |
38 |
end; |
end; |
39 |
|
KK=reshape(KK,length(KK),1); |
40 |
|
|
41 |
% [varargin{(iSub-1)*2+1} ' -- ' num2str(length(KK))] |
% [varargin{(iSub-1)*2+1} ' -- ' num2str(length(KK))] |
42 |
for iFld=1:length(fldNames); |
for iFld=1:length(fldNames); |
43 |
eval(['tmp1=MITprofSub.' fldNames{iFld} ';']); |
eval(['tmp1=MITprofSub.' fldNames{iFld} ';']); |
44 |
if strcmp('depth',varargin{(iSub-1)*2+1}) & strcmp(fldNames{iFld},'prof_depth'); |
if strcmp('depth',varargin{(iSub-1)*2+1}) & strcmp(fldNames{iFld},'prof_depth'); |
45 |
tmp1=tmp1(KK); |
tmp1=tmp1(KK); |
46 |
elseif strcmp('depth',varargin{(iSub-1)*2+1}); |
elseif strcmp('depth',varargin{(iSub-1)*2+1}); |
47 |
if size(tmp1,2)==length(MITprof.prof_depth); tmp1=tmp1(:,KK); end; |
if size(tmp1,2)==length(MITprofSub.prof_depth); tmp1=tmp1(:,KK); end; |
48 |
else; |
else; |
49 |
if size(tmp1,1)==size(prof_sub,1); tmp1=tmp1(KK,:); end; |
if size(tmp1,1)==size(prof_sub,1); tmp1=tmp1(KK,:); end; |
50 |
end; |
end; |
51 |
eval(['MITprofSub.' fldNames{iFld} '=tmp1;']); |
eval(['MITprofSub.' fldNames{iFld} '=tmp1;']); |
52 |
end; |
end; |
53 |
|
|
54 |
|
%add a couple things: |
55 |
|
%-------------------- |
56 |
|
MITprofSub.np=length(MITprofSub.prof_lon); |
57 |
|
MITprofSub.nr=length(MITprofSub.prof_depth); |
58 |
|
MITprofSub.list_descr=unique(MITprofSub.prof_descr); |
59 |
|
MITprofSub.nd=length(MITprofSub.list_descr); |
60 |
|
|
61 |
end; |
end; |
|
|
|
|
%add a couple things: |
|
|
%-------------------- |
|
|
MITprofSub.np=length(MITprofSub.prof_lon); |
|
|
MITprofSub.nr=length(MITprofSub.prof_depth); |
|
|
|
|