Changeset 388 for trunk/src/proj_field.m
- Timestamp:
- Apr 6, 2012, 4:37:12 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/proj_field.m
r382 r388 182 182 end 183 183 VarIndex=CellVarIndex{icell};% indices of the selected variables in the list FieldData.ListVarName 184 VarType=VarTypeCell{icell}; 184 VarType=VarTypeCell{icell};% structure defining the types of variables in the cell 185 185 ivar_X=VarType.coord_x; 186 186 ivar_Y=VarType.coord_y; … … 211 211 for ivar=VarIndex 212 212 VarName=FieldData.ListVarName{ivar}; 213 ProjData.ListVarName=[ProjData.ListVarName {VarName}]; 214 ProjData.VarDimName=[ProjData.VarDimName {'nb_points'}]; 213 ProjData.ListVarName=[ProjData.ListVarName {VarName}];% add the current variable to the list of projected variables 214 ProjData.VarDimName=[ProjData.VarDimName {'nb_points'}]; % projected VarName has a single dimension called 'nb_points' (set of projection points) 215 215 end 216 216 if ~test_grid … … 236 236 if isequal(length(ivar_FF),1) 237 237 FFName=FieldData.ListVarName{ivar_FF}; 238 eval(['FF=FieldData.' FFName '(indsel);']) 239 %ind_indsel=find(~FF); 238 FF=FieldData.(FFName)(indsel); 240 239 indsel=indsel(~FF); 241 240 end … … 244 243 VarName=FieldData.ListVarName{ivar}; 245 244 if isempty(indsel) 246 eval(['ProjData.' VarName '(ipoint,1)=NaN;'])245 ProjData.(VarName)(ipoint,1)=NaN; 247 246 else 248 eval(['Var=FieldData.' VarName '(indsel);'])249 eval(['ProjData.' VarName '(ipoint,1)=mean(Var);'])247 Var=FieldData.(VarName)(indsel); 248 ProjData.(VarName)(ipoint,1)=mean(Var); 250 249 if isequal(ObjectData.ProjMode,'interp') 251 250 ProjData.(VarName)(ipoint,1)=griddata_uvmat(coord_x(indsel),coord_y(indsel),Var,Xpoint(1),Xpoint(2)); … … 254 253 end 255 254 end 256 else 257 %DimIndices=FieldData.VarDimIndex{VarIndex(1)};%indices of the dimensions of the first variable (common to all variables in the cell) 258 %case of structured coordinates 255 else %case of structured coordinates 259 256 if numel(VarType.coord)>=2 & VarType.coord(1:2) > 0; 260 257 AYName=FieldData.ListVarName{VarType.coord(1)}; … … 262 259 eval(['AX=FieldData.' AXName ';']);% set of x positions 263 260 eval(['AY=FieldData.' AYName ';']);% set of y positions 264 AName=FieldData.ListVarName{VarIndex(1)}; 261 AName=FieldData.ListVarName{VarIndex(1)};% a single variable assumed in the current cell 265 262 eval(['A=FieldData.' AName ';']);% scalar 266 npxy=size(A); 267 268 % % nbcolor=1; %default 269 % for idim=1:length(ListDimName) 270 % DimName=ListDimName{idim}; 271 % if isequal(DimName,'rgb')|isequal(DimName,'nb_coord')|isequal(DimName,'nb_coord_i') 272 % nbcolor=npxy(idim); 273 % DimIndices(idim)=[]; 274 % npxy(idim)=[]; 275 % end 276 % if isequal(DimName,'nb_coord_j')% NOTE: CASE OF TENSOR NOT TREATED 277 % DimIndices(idim)=[]; 278 % npxy(idim)=[]; 279 % end 280 % end 281 ind_1=find(npxy==1); 282 %DimIndices(ind_1)=[]; %suppress singleton dimensions 283 % indxy=find(DimVarIndex(DimIndices));%select dimension variables (DimIndices non zero) 284 %NbDim=length(DimIndices)%number of space dimensions 285 NbDim=numel(VarType.coord); 286 Coord_z=[]; 287 Coord_y=[]; 288 Coord_x=[]; 263 npxy=size(A); 264 NbDim=numel(VarType.coord(VarType.coord>0));%number of space dimensions 265 %update VarDimName in case of components (non coordinate dimensions e;g. color components) 266 if numel(npxy)>NbDim 267 ProjData.VarDimName{end}={'nb_points','component'}; 268 end 289 269 for idim=1:NbDim %loop on space dimensions 290 270 test_interp(idim)=0;%test for coordiate interpolation (non regular grid), =0 by default 291 271 test_coord(idim)=0;%test for defined coordinates, =0 by default 292 %ivar=DimVarIndex(DimIndices(idim));% index of the variable corresponding to the current dimension293 272 ivar=VarType.coord(idim); 294 % if ~isequal(ivar,0)% a variable corresponds to the current dimension 295 eval(['Coord{idim}=FieldData.' FieldData.ListVarName{ivar} ';']) ;% position for the first index 296 if numel(Coord{idim})==2 297 DCoord_min(idim)= (Coord{idim}(2)-Coord{idim}(1))/(npxy(idim)-1); 298 else 299 DCoord=diff(Coord{idim}); 300 DCoord_min(idim)=min(DCoord); 301 DCoord_max=max(DCoord); 302 test_direct(idim)=DCoord_max>0;% =1 for increasing values, 0 otherwise 303 test_direct_min=DCoord_min(idim)>0;% =1 for increasing values, 0 otherwise 304 if ~isequal(test_direct(idim),test_direct_min) 305 errormsg=['non monotonic dimension variable # ' num2str(idim) ' in proj_field.m']; 306 return 307 end 308 test_interp(idim)=(DCoord_max-DCoord_min(idim))> 0.0001*abs(DCoord_max);% test grid regularity 309 test_coord(idim)=1; 310 end 311 % else % no variable associated with the first dimension, look fo variable attributes Coord_1, _2 or _3 312 % Coord_i_str=['Coord_' num2str(idim)]; 313 % DCoord_min(idim)=1;%default 314 % Coord{idim}=[0.5 npxy(idim)]; 315 % test_direct(idim)=1; 316 % end 273 Coord{idim}=FieldData.(FieldData.ListVarName{ivar}); % position for the first index 274 if numel(Coord{idim})==2 275 DCoord_min(idim)= (Coord{idim}(2)-Coord{idim}(1))/(npxy(idim)-1); 276 else 277 DCoord=diff(Coord{idim}); 278 DCoord_min(idim)=min(DCoord); 279 DCoord_max=max(DCoord); 280 test_direct(idim)=DCoord_max>0;% =1 for increasing values, 0 otherwise 281 test_direct_min=DCoord_min(idim)>0;% =1 for increasing values, 0 otherwise 282 if ~isequal(test_direct(idim),test_direct_min) 283 errormsg=['non monotonic dimension variable # ' num2str(idim) ' in proj_field.m']; 284 return 285 end 286 test_interp(idim)=(DCoord_max-DCoord_min(idim))> 0.0001*abs(DCoord_max);% test grid regularity 287 test_coord(idim)=1; 288 end 317 289 end 318 290 DX=DCoord_min(2); … … 343 315 %[I,J]=meshgrid([1:j_int],[1:i_int]); 344 316 for ivar=VarIndex 345 eval(['Avalue=FieldData.' FieldData.ListVarName{ivar} '(j_int,i_int,:);']);346 eval(['ProjData.' FieldData.ListVarName{ivar} '(ipoint,:)=mean(mean(Avalue));']);317 Avalue=FieldData.(FieldData.ListVarName{ivar})(j_int,i_int,:); 318 ProjData.(FieldData.ListVarName{ivar})(ipoint,:)=mean(mean(Avalue)); 347 319 end 348 320 end … … 445 417 eval(['AY=FieldData.' AYName ';'])% y coordinate 446 418 VarName=FieldData.ListVarName{VarIndex(1)}; 447 eval(['DimValue=size(FieldData.' VarName ');'])419 DimValue=size(FieldData.(VarName)); 448 420 if length(AX)==2 449 421 AX=linspace(AX(1),AX(end),DimValue(2)); … … 460 432 % AX=linspace(Coord{2}(1),Coord{2}(2),DimValue(2)); 461 433 % AY=linspace(Coord{1}(1),Coord{1}(2),DimValue(1)); %TODO : 3D case 462 testcolor=find(numel(DimValue)==3);434 % testcolor=find(numel(DimValue)==3); 463 435 if length(DimValue)==3 464 436 testcolor=1; … … 475 447 for ivar=1:length(VarIndex) 476 448 VarName=FieldData.ListVarName{VarIndex(ivar)}; 477 eval(['FieldData.' VarName '=reshape(FieldData.' VarName ',npxy(1)*npxy(2),npxy(3));']); % keep only non false vectors449 FieldData.(VarName)=reshape(FieldData.(VarName),npxy(1)*npxy(2),npxy(3)); % keep only non false vectors 478 450 end 479 451 end … … 526 498 if testproj(ivar) 527 499 VarName=FieldData.ListVarName{ivar}; 528 eval(['ProjData.' VarName 'Mean=mean(mean(double(FieldData.' VarName '(indsel,:))));']); % keep only non false vectors529 eval(['ProjData.' VarName 'Min=min(min(double(FieldData.' VarName '(indsel,:))));']); % keep only non false vectors530 eval(['ProjData.' VarName 'Max=max(max(double(FieldData.' VarName '(indsel,:))));']); % keep only non false vectors500 ProjData.([VarName 'Mean'])=mean(double(FieldData.(VarName)(indsel,:))); % take the mean in the selected region, for each color component 501 ProjData.([VarName 'Min'])=min(double(FieldData.(VarName)(indsel,:))); % take the min in the selected region , for each color component 502 ProjData.([VarName 'Max'])=max(double(FieldData.(VarName)(indsel,:))); % take the max in the selected region , for each color component 531 503 if isequal(Mesh(ivar),0) 532 eval(['[ProjData.' VarName 'Histo,ProjData.' VarName ']=hist(double(FieldData.' VarName '(indsel,: )),100);']); % default histogram with 100 bins504 eval(['[ProjData.' VarName 'Histo,ProjData.' VarName ']=hist(double(FieldData.' VarName '(indsel,:,:)),100);']); % default histogram with 100 bins 533 505 else 534 506 eval(['ProjData.' VarName '=(ProjData.' VarName 'Min+Mesh(ivar)/2:Mesh(ivar):ProjData.' VarName 'Max);']); % list of bin values … … 537 509 ProjData.ListVarName=[ProjData.ListVarName {VarName} {[VarName 'Histo']} {[VarName 'Mean']} {[VarName 'Min']} {[VarName 'Max']}]; 538 510 if test_Amat && testcolor 539 ProjData.VarDimName=[ProjData.VarDimName {VarName} {{VarName,'rgb'}} {'rgb'} ];%{{'nb_point','rgb'}};511 ProjData.VarDimName=[ProjData.VarDimName {VarName} {{VarName,'rgb'}} {'rgb'} {'rgb'} {'rgb'}];%{{'nb_point','rgb'}}; 540 512 else 541 ProjData.VarDimName=[ProjData.VarDimName {VarName} {VarName} {' nbpoint'} {'nbpoint'} {'nbpoint'}];513 ProjData.VarDimName=[ProjData.VarDimName {VarName} {VarName} {'one'} {'one'} {'one'}]; 542 514 end 543 515 ProjData.VarAttribute=[ProjData.VarAttribute FieldData.VarAttribute{ivar} {[]} {[]} {[]} {[]}];
Note: See TracChangeset
for help on using the changeset viewer.