0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 function [filename,idetect,num_i1_out,num_j1_out,num_i2_out,num_j2_out,subdir_out]=...
0047 name_generator(filebase,num_i1,num_j1,ext,nom_type,comp_input,num_i2,num_j2,subdir);
0048 sizf=size(filebase);
0049 if (~ischar(filebase)||~isequal(sizf(1),1)),filebase='';end
0050 if ~ischar(ext),ext='';end
0051
0052 idetect=0;
0053 if ~exist('num_i1','var') || isequal(num_i1,[])
0054 num_i1=1;
0055 end
0056 if ~exist('num_j1','var') || isequal(num_j1,[])
0057 num_j1=1;
0058 end
0059 if ~exist('num_i2','var') || isequal(num_i2,[])
0060 num_i2=num_i1;
0061 end
0062 if ~exist('subdir','var')|| isempty(subdir)
0063 subdir='' ;
0064 end
0065
0066 if length(filebase)>4 & filebase(end-3)=='m';
0067 basedouble=double(filebase);
0068 val=(48>basedouble)|(basedouble>57);
0069 i=length(filebase)-4;
0070 while val(i)==0 & i>0
0071 i=i-1;
0072 end
0073 nbslice=str2num(filebase(i+1:end-4));
0074 if ~isequal(nbslice,[])
0075 num_i1=mod(num_i1-1,nbslice)+1;
0076 if isequal(nom_type,'png_old')|isequal(nom_type,'#a')
0077 num_j1=1;
0078 end
0079 end
0080 end
0081 test_pairs=isequal(nom_type,'netc_old')| isequal(nom_type,'netc_2D') | isequal(nom_type,'netc_3D')| isequal(nom_type,'_i1-i2_j1-j2')| ...
0082 isequal(nom_type,'netc_series')| isequal(nom_type,'#_ab')| isequal(nom_type,'_i_j1-j2')| isequal(nom_type,'_i1-i2_j')| isequal(nom_type,'_i1-i2');
0083 test_2D= isequal(nom_type,'netc_old') |isequal(nom_type,'netc_2D')|isequal(nom_type,'#_ab') |isequal(nom_type,'_i_j1-j2');
0084 test_3D=isequal(nom_type,'netc_3D') |isequal(nom_type,'netc_series')| isequal(nom_type,'_i1-i2_j')| isequal(nom_type,'_i1-i2');
0085 if isequal(nom_type,'series_i')| isequal(nom_type,'_i');
0086 filename=[filebase '_' num2str(num_i1) ext];
0087 idetect=(exist(filename,'file')==2);
0088 elseif length(nom_type)==5 && isequal(nom_type(1:3),'_%0')&& isequal(nom_type(5),'d');
0089 filename=[filebase '_' num2str(num_i1,nom_type(2:5)) ext];
0090 idetect=(exist(filename,'file')==2);
0091 elseif isequal(nom_type,'series_i_j')| isequal(nom_type,'_i_j')
0092 filename=[filebase '_' num2str(num_i1) '_' num2str(num_j1) ext];
0093 idetect=(exist(filename,'file')==2);
0094 elseif isequal(nom_type,'png_old')| isequal(nom_type,'#a')| isequal(nom_type,'#A')
0095 filename=[filebase num2str(num_i1,'%03d') num2stra(num_j1,nom_type) ext];
0096 idetect=(exist(filename,'file')==2);
0097 elseif length(nom_type)>=5 & isequal(nom_type(2:3),'%0') & isequal(nom_type(5),'d')
0098 filename=[filebase nom_type(1) num2str(num_i1,nom_type(2:4)) num2stra(num_j1,nom_type) ext];
0099 idetect=(exist(filename,'file')==2);
0100 elseif isequal(nom_type,'raw_SMD')
0101 filename=[filebase num2str(num_i1,'%03d') num2stra(num_j1,nom_type)];
0102 idetect=(exist(filename,'file')==2);
0103 elseif isequal(nom_type,'ima_num')| isequal(nom_type,'#')
0104 filename=[filebase num2str(num_i1) ext];
0105 idetect=(exist(filename,'file')==2);
0106 elseif length(nom_type)>=4 & isequal(nom_type(1:2),'%0') & isequal(nom_type(end),'d')
0107 filename=[filebase num2str(num_i1,nom_type) ext];
0108 idetect=(exist(filename,'file')==2);
0109
0110
0111 elseif test_pairs
0112 if (~exist('num_j2','var')| isequal(num_j2,[])) & test_2D
0113 num_j2=num_j1+1;
0114 end
0115 if (~exist('num_i2','var')| isequal(num_i2,[])) & test_3D
0116 num_i2=num_i1+1;
0117 end
0118 filebasesub=filebase;
0119
0120 if ~isequal(subdir,'') && ~isequal(subdir,'?')
0121 [Path,Name]=fileparts(filebase);
0122 filebasesub=fullfile(Path,subdir,Name);
0123 end
0124
0125 if isequal(num_i2,0)
0126 filename=[filebasesub '*-*_' num2str(num_i1) ext];
0127 return
0128 end
0129 if isequal(num_j2,0)
0130 filename=[filebasesub '_' num2str(num_i1) '_*-*' ext];
0131 return
0132 end
0133
0134 if (exist('comp_input','var') & isequal(comp_input,1))
0135 if isequal(nom_type,'netc_old')|isequal(nom_type,'#_ab')
0136 if isequal(num2str(num_j1),num2str(num_j2))
0137 filename=[filebasesub num2str(num_i1,'%03d') '_' num2stra(num_j1,nom_type) ext];
0138 else
0139 filename=[filebasesub num2str(num_i1,'%03d') '_' num2stra(num_j1,nom_type) num2stra(num_j2,nom_type) ext];
0140 end
0141 elseif isequal(nom_type,'netc_2D')|isequal(nom_type,'_i_j1-j2')
0142 if isequal(num2str(num_j1),num2str(num_j2))
0143 filename=[filebasesub '_' num2str(num_i1) '_' num2str(num_j1) ext];
0144 else
0145 filename=[filebasesub '_' num2str(num_i1) '_' num2str(num_j1) '-' num2str(num_j2) ext];
0146 end
0147 elseif isequal(nom_type,'netc_3D') || isequal(nom_type,'_i1-i2_j')
0148 if isequal(num2str(num_i1),num2str(num_i2))
0149 filename=[filebasesub '_' num2str(num_i1) '_' num2str(num_j1) ext];
0150 else
0151 filename=[filebasesub '_' num2str(num_i1) '-' num2str(num_i2) '_' num2str(num_j1) ext];
0152 end
0153 elseif isequal(nom_type,'netc_series') || isequal(nom_type,'_i1-i2')
0154 if isequal(num2str(num_i1),num2str(num_i2))
0155 filename=[filebasesub '_' num2str(num_i1) ext];
0156 else
0157 filename=[filebasesub '_' num2str(num_i1) '-' num2str(num_i2) ext];
0158 end
0159 elseif isequal(nom_type,'_i1-i2_j1-j2')
0160 if isequal(num2str(num_i1),num2str(num_i2))
0161 app1= [num2str(num_i1)];
0162 else
0163 app1= [num2str(num_i1) '-' num2str(num_i2)];
0164 end
0165 if isequal(num2str(num_j1),num2str(num_j2))
0166 app2= [num2str(num_j1)];
0167 else
0168 app2= [num2str(num_j1) '-' num2str(num_j2)];
0169 end
0170 filename=[filebasesub '_' app1 '_' app2 ext];
0171 end
0172 idetect=(exist(filename,'file')==2);
0173
0174 else
0175 [filename,num_i1,num_j1,num_i2,num_j2,idetect]=search_pair(filebasesub,num_i1,num_j1,num_i2,nom_type);
0176 end
0177
0178
0179 if idetect==0 && isequal(subdir,'?')
0180 [pathfile,name]=fileparts(filebase);
0181 direct=dir(pathfile);
0182 datedir=[];
0183 idir=0;
0184 indir=find(cell2mat({direct.isdir}));
0185 direct=direct(indir([3:end]));
0186 lengthdir=length(direct);
0187 if lengthdir==0
0188 subdir='';
0189 else
0190 for idir=1:lengthdir
0191 date_str=direct(idir).date;
0192 datedir(idir)=0;
0193 char_code=double(date_str);
0194 special_char=(char_code>127);
0195 if isempty(find(special_char))
0196 datedir(idir)=datenum(date_str);
0197 end
0198
0199 end
0200 [mostrec,indrec]=max(datedir);
0201 subdir=direct(indrec).name;
0202 end
0203 filebasesub=fullfile(pathfile,subdir,name);
0204
0205 if (exist('comp_input','var') & isequal(comp_input,1))
0206 if isequal(nom_type,'netc_old')|isequal(nom_type,'#_ab')
0207 filename=[filebasesub num2str(num_i1,'%03d') '_' num2stra(num_j1,nom_type) num2stra(num_j2,nom_type) ext];
0208 elseif isequal(nom_type,'netc_2D')|isequal(nom_type,'_i1_j1-j2')
0209 filename=[filebasesub '_' num2str(num_i1) '_' num2str(num_j1) '-' num2str(num_i2) ext];
0210 elseif isequal(nom_type,'netc_3D')|isequal(nom_type,'_i1-i2_j')
0211 filename=[filebasesub '_' num2str(num_i1) '-' num2str(num_i2) '_' num2str(num_j1) ext];
0212 elseif isequal(nom_type,'netc_series')|isequal(nom_type,'_i1-i2')
0213 filename=[filebasesub '_' num2str(num_i1) '-' num2str(num_i2) ext];
0214 end
0215 idetect=(exist(filename,'file')==2);
0216 else
0217 [filename,num_i1,num_j1,num_i2,num_j2,idetect]=search_pair(filebasesub,num_i1,num_j1,num_i2,nom_type);
0218 end
0219 end
0220
0221 else
0222 filebasesub=filebase;
0223 if ~isequal(subdir,'') && ~isequal(subdir,'?')
0224 [Path,Name]=fileparts(filebase);
0225 filebasesub=fullfile(Path,subdir,Name);
0226 end
0227 filename=[filebasesub ext];
0228 idetect=(exist(filename,'file')==2);
0229 end
0230 num_i1_out=num_i1;
0231 num_j1_out=num_j1;
0232 if exist('num_i2','var'), num_i2_out=num_i2; else, num_i2_out=[]; end;
0233 if exist('num_j2','var'), num_j2_out=num_j2; else, num_j2_out=[]; end;
0234 if ~isequal(subdir,'?'), subdir_out=subdir; else, subdir_out='';end;
0235
0236
0237
0238
0239
0240 function [filename,num_i1,num_j1,num_i2,num_j2,idetect]=search_pair(filebasesub,num_i1,num_j1,num_i2,nom_type)
0241
0242
0243
0244
0245
0246 filename=[];num_j2=[];idetect=0;
0247 if isequal(nom_type,'netc_old')|isequal(nom_type,'#_ab')
0248 dirpair=dir([filebasesub num2str(num_i1,'%03d') '_*.nc']);
0249 elseif isequal(nom_type,'netc_2D')|isequal(nom_type,'_i_j1-j2')
0250 dirpair=dir([filebasesub '_' num2str(num_i1) '_*-*.nc']);
0251 elseif isequal(nom_type,'netc_3D')|isequal(nom_type,'_i1-i2_j')
0252 dirpair=dir([filebasesub '_' num2str(num_i1) '-*_' num2str(num_j1) '.nc']);
0253 elseif isequal(nom_type,'netc_series')|isequal(nom_type,'_i1-i2')
0254 dirpair=dir([filebasesub '_' num2str(num_i1) '-*.nc']);
0255 if isempty(dirpair)
0256 dirpair=dir([filebasesub '_*-' num2str(num_i2) '.nc']);
0257 end
0258 end
0259 nbpair=length(dirpair);
0260 if nbpair >= 1
0261 idetect=1;
0262 for ipair=1:nbpair
0263 date_str=dirpair(ipair).date;
0264 datepair(ipair)=0;
0265 char_code=double(date_str);
0266 special_char=(char_code>127);
0267 if isempty(find(special_char))
0268 datepair(ipair)=datenum(date_str);
0269 end
0270
0271 end
0272 [choice,indpair]=max(datepair);
0273
0274 [pathname,file,field_count,str2,str_a,str_b,ext,nom_type]=name2display(dirpair(indpair).name);
0275 num_i1=str2num(field_count);
0276 num_i2=str2num(str2);
0277 num_j1=stra2num(str_a);
0278 num_j2=stra2num(str_b);
0279 pathname=fileparts(filebasesub);
0280 filename=fullfile(pathname,dirpair(indpair).name);
0281 end
0282
0283