Changeset 404 for trunk/src/uvmat.m
- Timestamp:
- Apr 30, 2012, 6:46:45 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/uvmat.m
r403 r404 1989 1989 if ~isempty(filename) 1990 1990 ObjectName=filename; 1991 FieldName=[];%default 1992 VelType=[];%default 1993 % FileExt=get(handles.FileExt,'String'); 1994 FileType=UvData.FileType{1}; 1995 switch FileType 1996 % if strcmp(Ext,'.nc')||strcmp(Ext,'.cdf') 1991 FieldName='';%default 1992 VelType='';%default 1993 % FileType=UvData.FileType{1}; 1994 switch UvData.FileType{1} 1997 1995 case {'civx','civdata','netcdf'}; 1998 1996 list_fields=get(handles.Fields,'String');% list menu fields 1999 index_fields=get(handles.Fields,'Value');% selected string index2000 FieldName= list_fields{ index_fields}; % selected field1997 % index_fields=get(handles.Fields,'Value');% selected string index 1998 FieldName= list_fields{get(handles.Fields,'Value')}; % selected field 2001 1999 if ~strcmp(FieldName,'get_field...') 2002 2000 if get(handles.FixVelType,'Value') 2003 2001 VelTypeList=get(handles.VelType,'String'); 2004 2002 VelType=VelTypeList{get(handles.VelType,'Value')}; 2005 % VelType=setfield(handles);% read the velocity type.2006 2003 end 2007 2004 end … … 2029 2026 ParamIn.VelType=VelType; 2030 2027 ParamIn.GUIName='get_field'; 2031 [Field{1},ParamOut,errormsg] = read_field(ObjectName, FileType,ParamIn,num_i1);2028 [Field{1},ParamOut,errormsg] = read_field(ObjectName,UvData.FileType{1},ParamIn,num_i1); 2032 2029 if ~isempty(errormsg) 2033 2030 errormsg=['error in reading ' filename ': ' errormsg]; … … 2056 2053 end 2057 2054 Name=filename_1; 2058 FileType_1=UvData.FileType{2}; 2059 switch FileType_1 2060 % if strcmp(Ext,'.nc')||strcmp(Ext,'.cdf') 2055 % FileType_1=UvData.FileType{2}; 2056 switch UvData.FileType{2} 2061 2057 case {'civx','civdata','netcdf'}; 2062 2058 list_fields=get(handles.Fields_1,'String');% list menu fields … … 2066 2062 VelTypeList=get(handles.VelType_1,'String'); 2067 2063 VelType_1=VelTypeList{get(handles.VelType_1,'Value')};% read the velocity type. 2068 % VelType_1=setfield(handles);% read the velocity type.2069 2064 end 2070 2065 end … … 2102 2097 ParamIn.VelType=VelType_1; 2103 2098 ParamIn.GUIName='get_field_1'; 2104 [Field{2},ParamOut_1,errormsg] = read_field(Name, FileType_1,ParamIn,num_i1);2099 [Field{2},ParamOut_1,errormsg] = read_field(Name,UvData.FileType{2},ParamIn,num_i1); 2105 2100 if ~isempty(errormsg) 2106 2101 errormsg=['error in reading ' FieldName_1 ' in ' filename_1 ': ' errormsg]; … … 2124 2119 test_veltype=0; 2125 2120 % if ~isequal(FileType,'netcdf')|| isequal(FieldName,'get_field...') 2126 if (strcmp( FileType,'civx')||strcmp(FileType,'civdata'))&& ~strcmp(FieldName,'get_field...')2121 if (strcmp(UvData.FileType{1},'civx')||strcmp(UvData.FileType{1},'civdata'))&& ~strcmp(FieldName,'get_field...') 2127 2122 test_veltype=1; 2128 2123 set(handles.VelType,'Visible','on') 2129 2124 set(handles.VelType_1,'Visible','on') 2130 2125 set(handles.FixVelType,'Visible','on') 2131 menu=set_veltype_display(ParamOut.CivStage, FileType);2126 menu=set_veltype_display(ParamOut.CivStage,UvData.FileType{1}); 2132 2127 index_menu=strcmp(ParamOut.VelType,menu);%look for VelType in the menu 2133 2128 index_val=find(index_menu,1); … … 2154 2149 set(handles.Fields_1,'String',[{''};ParamOut.FieldList]); %update the field menu 2155 2150 else 2156 if (~strcmp( FileType_1,'netcdf')&&~strcmp(FileType_1,'civdata')&&~strcmp(FileType_1,'civx'))|| isequal(FieldName_1,'get_field...')2151 if (~strcmp(UvData.FileType{2},'netcdf')&&~strcmp(UvData.FileType{2},'civdata')&&~strcmp(UvData.FileType{2},'civx'))|| isequal(FieldName_1,'get_field...') 2157 2152 set(handles.VelType_1,'Visible','off') 2158 2153 else … … 2228 2223 end 2229 2224 %% update tps in phys coordinates if needed 2230 if (strcmp(VelType,'filter1')||strcmp(VelType,'filter2'))&& strcmp( FileType,'civdata')&&isfield(Field{1},'U')&& isfield(Field{1},'V')2225 if (strcmp(VelType,'filter1')||strcmp(VelType,'filter2'))&& strcmp(UvData.FileType{1},'civdata')&&isfield(Field{1},'U')&& isfield(Field{1},'V') 2231 2226 Field{1}.X=Field{1}.X(Field{1}.FF==0); 2232 2227 Field{1}.Y=Field{1}.Y(Field{1}.FF==0); … … 2235 2230 [Field{1}.SubRange,Field{1}.NbSites,Field{1}.Coord_tps,Field{1}.U_tps,Field{1}.V_tps]=filter_tps([Field{1}.X Field{1}.Y],Field{1}.U,Field{1}.V,[],Field{1}.Patch1_SubDomain,0); 2236 2231 end 2237 if numel(Field)==2 && ~test_keepdata_1 && isequal( FileType_1(1:3),'civ') && ~isequal(ParamOut_1.FieldName,'get_field...')%&&~isempty(FieldName_1)2232 if numel(Field)==2 && ~test_keepdata_1 && isequal(UvData.FileType{2}(1:3),'civ') && ~isequal(ParamOut_1.FieldName,'get_field...')%&&~isempty(FieldName_1) 2238 2233 %update tps in phys coordinates if needed 2239 if (strcmp(VelType_1,'filter1')||strcmp(VelType_1,'filter2'))&& strcmp( FileType_1,'civdata')&&isfield(Field{2},'U')&& isfield(Field{2},'V')2234 if (strcmp(VelType_1,'filter1')||strcmp(VelType_1,'filter2'))&& strcmp(UvData.FileType{2},'civdata')&&isfield(Field{2},'U')&& isfield(Field{2},'V') 2240 2235 Field{2}.X=Field{2}.X(Field{2}.FF==0); 2241 2236 Field{2}.Y=Field{1}.Y(Field{2}.FF==0); … … 2256 2251 2257 2252 %% combine the two input fields (e.g. substract velocity fields) 2253 Field{1}.FieldList=[{ParamOut.FieldName} {ParamOut.ColorVar}]; 2258 2254 if numel(Field)==2 2255 Field{2}.FieldList=[{ParamOut_1.FieldName} {ParamOut_1.ColorVar}]; 2259 2256 [UvData.Field,errormsg]=sub_field(Field{1},Field{2}); 2260 2257 else … … 2265 2262 return 2266 2263 end 2267 UvData.Field.FieldList={FieldName}; % TODO: to generalise, used for proj_field with tps interpolation 2264 %UvData.Field.FieldList={FieldName}; % TODO: to generalise, used for proj_field with tps interpolation 2265 2268 2266 2269 2267 %% get bounds and mesh (needed for mouse action and to open set_object) 2270 2268 test_x=0; 2271 2269 test_z=0;% test for unstructured z coordinate 2272 [ UvData.Field,errormsg]=check_field_structure(UvData.Field);2270 [errormsg,ListDimName,DimValue,VarDimIndex]=check_field_structure(UvData.Field); 2273 2271 if ~isempty(errormsg) 2274 2272 errormsg=['error in uvmat/refresh_field/check_field_structure: ' errormsg]; … … 2336 2334 else 2337 2335 VarIndex=CellVarIndex{imax}; % list of variable indices 2338 DimIndex= UvData.Field.VarDimIndex{VarIndex(1)}; %list of dim indices for the variable2339 nbpoints_x= UvData.Field.DimValue(DimIndex(NbDim));2336 DimIndex=VarDimIndex{VarIndex(1)}; %list of dim indices for the variable 2337 nbpoints_x=DimValue(DimIndex(NbDim)); 2340 2338 DX=(XMax-XMin)/(nbpoints_x-1); 2341 2339 if NbDim >1 2342 nbpoints_y= UvData.Field.DimValue(DimIndex(NbDim-1));2340 nbpoints_y=DimValue(DimIndex(NbDim-1)); 2343 2341 DY=(YMax-YMin)/(nbpoints_y-1); 2344 2342 end 2345 2343 if NbDim==3 2346 nbpoints_z= UvData.Field.DimValue(DimIndex(1));2344 nbpoints_z=DimValue(DimIndex(1)); 2347 2345 DZ=(ZMax-ZMin)/(nbpoints_z-1); 2348 2346 UvData.Field.Mesh=(DX*DY*DZ)^(1/3); … … 2352 2350 UvData.Field.Mesh=DX;%sqrt(DX*DY); 2353 2351 end 2352 end 2353 % adjust the mesh to a value 1, 2 , 5 *10^n 2354 ord=10^(floor(log10(UvData.Field.Mesh)));%order of magnitude 2355 if UvData.Field.Mesh/ord>=5 2356 UvData.Field.Mesh=5*ord; 2357 elseif UvData.Field.Mesh/ord>=2 2358 UvData.Field.Mesh=2*ord; 2359 else 2360 UvData.Field.Mesh=ord; 2354 2361 end 2355 2362 end … … 2362 2369 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 2363 2370 if ~isempty(hset_object) %if set_object is detected 2364 % hhset_object=guidata(hset_object); 2365 % % ZBounds_old(1)=get(hhset_object.z_slider,'Min'); 2366 % % ZBounds_old(2)=get(hhset_object.z_slider,'Max'); 2367 % % if isequal(ZBounds_old,ZBounds) 2368 % test_set_object=0;% do not refresh the GUI set_object 2369 % else 2370 delete(hset_object);% delete the GUI set_object if it does not fit 2371 % end 2371 delete(hset_object);% delete the GUI set_object if it does not fit 2372 2372 end 2373 2373 if test_set_object% reinitiate the GUI set_object … … 2380 2380 UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen 2381 2381 UvData.Object{1}.Angle=[0 0 0]; 2382 % UvData.Object{1}.Theta=0;2383 % UvData.Object{1}.Psi=0;2384 2382 UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR 2385 % PlotHandles=get_plot_handles(handles);2386 2383 UvData.Object{1}.Name='1-PLANE'; 2387 2384 UvData.Object{1}.enable_plot=1; … … 2460 2457 PlotParam{1}.Vectors.ListColorCode= {'rgb'}; 2461 2458 end 2462 keeplim(1)=get(handles.CheckFixLimits,'Value');% test for fixed graph limits2459 %keeplim(1)=get(handles.CheckFixLimits,'Value');% test for fixed graph limits 2463 2460 PosColorbar{1}=UvData.OpenParam.PosColorbar;%prescribe the colorbar position on the uvmat interface 2464 2461 … … 2471 2468 %PlotParam{2}=read_plot_param(plot_handles{2});%read plotting parameters on the viewinterface 2472 2469 PlotParam{2}=read_GUI(handles.uvmat);%read plotting parameters on the uvmat interface 2473 keeplim(2)=get(plot_handles{2}.CheckFixLimits,'Value');2470 % keeplim(2)=get(plot_handles{2}.CheckFixLimits,'Value'); 2474 2471 PosColorbar{2}='*'; %TODO: deal with colorbar position on view_field 2475 2472 end … … 2479 2476 for imap=1:numel(IndexObj) 2480 2477 iobj=IndexObj(imap); 2481 % if iobj==1 && ~isfield(UvData.Object{iobj},'Type')% case with no projection (only for the first empty object) 2482 % ord=10^(floor(log10(UvData.Field.Mesh)));%order of magnitude 2483 % if UvData.Field.Mesh/ord>=5 2484 % mesh=5*ord; 2485 % elseif UvData.Field.Mesh/ord>=2 2486 % mesh=2*ord; 2487 % else 2488 % mesh=ord; 2489 % end 2490 % coord_x=UvData.Field.XMin:mesh:UvData.Field.XMax; 2491 % coord_y=UvData.Field.YMin:mesh:UvData.Field.YMax; 2492 % [XI,YI]=meshgrid(coord_x,coord_y); 2493 % XI=reshape(XI,[],1); 2494 % YI=reshape(YI,[],1); 2495 % [ObjectData,errormsg]=calc_field({FieldName},UvData.Field,[XI YI]); 2496 % else 2478 if iobj==1 && ~isfield(UvData.Object{iobj},'Type')% case with no projection (only for the first empty object) 2479 [ObjectData,errormsg]=calc_field(UvData.Field.FieldList,UvData.Field); 2480 else 2497 2481 [ObjectData,errormsg]=proj_field(UvData.Field,UvData.Object{iobj});% project field on the object 2498 %end2482 end 2499 2483 if ~isempty(errormsg) 2500 2484 return … … 2539 2523 end 2540 2524 ObjectData.ListVarName(ind_off)=[]; 2541 ObjectData.VarDimIndex(ind_off)=[];2525 VarDimIndex(ind_off)=[]; 2542 2526 ind_off=[]; 2543 for ilist=1:length( ObjectData.ListDimName)2544 if isequal( ObjectData.ListDimName{ilist},'MaskX') || isequal(ObjectData.ListDimName{ilist},'MaskY')2527 for ilist=1:length(ListDimName) 2528 if isequal(ListDimName{ilist},'MaskX') || isequal(ListDimName{ilist},'MaskY') 2545 2529 ind_off=[ind_off ilist]; 2546 2530 end 2547 2531 end 2548 ObjectData.ListDimName(ind_off)=[];2549 ObjectData.DimValue(ind_off)=[];2532 ListDimName(ind_off)=[]; 2533 DimValue(ind_off)=[]; 2550 2534 end 2551 2535 end 2552 2536 if ~isempty(ObjectData) 2537 2553 2538 PlotType='none'; %default 2554 2539 if imap==2 && isempty(view_field_handle) … … 3237 3222 data.CoordType=UvData.CoordType; 3238 3223 end 3239 if isfield(UvData ,'Mesh')&~isempty(UvData.Mesh)3240 data.Range Y=UvData.Mesh;3241 data.Range X=UvData.Mesh;3242 data.DX=UvData. Mesh;3243 data.DY=UvData. Mesh;3224 if isfield(UvData.Field,'Mesh')&~isempty(UvData.Field.Mesh) 3225 data.RangeX=[UvData.Field.XMin UvData.Field.XMax]; 3226 data.RangeY=[UvData.Field.YMin UvData.Field.YMax]; 3227 data.DX=UvData.Field.Mesh; 3228 data.DY=UvData.Field.Mesh; 3244 3229 elseif isfield(UvData.Field,'AX')&isfield(UvData.Field,'AY')& isfield(UvData.Field,'A')%only image 3245 3230 np=size(UvData.Field.A); … … 4328 4313 if isfield(UvData,'Field') 4329 4314 Field=UvData.Field; 4330 if isfield(Field,'Mesh')&&~isempty(Field.Mesh) 4331 ord=10^(floor(log10(Field.Mesh)));%order of magnitude 4332 if Field.Mesh/ord>=5 4333 mesh=5*ord; 4334 elseif Field.Mesh/ord>=2 4335 mesh=2*ord; 4336 else 4337 mesh=ord; 4338 end 4339 data.RangeX=mesh; 4340 data.RangeY=mesh; 4341 data.DX=mesh; 4342 data.DY=mesh; 4343 elseif isfield(Field,'AX')&& isfield(Field,'AY')&& isfield(Field,'A')%only image 4344 np=size(Field.A); 4345 meshx=(Field.AX(end)-Field.AX(1))/np(2); 4346 meshy=abs(Field.AY(end)-Field.AY(1))/np(1); 4347 data.RangeY=max(meshx,meshy); 4348 data.RangeX=max(meshx,meshy); 4349 data.DX=max(meshx,meshy); 4315 if isfield(UvData.Field,'Mesh')&&~isempty(UvData.Field.Mesh) 4316 data.RangeX=[UvData.Field.XMin UvData.Field.XMax]; 4317 data.RangeY=[UvData.Field.YMin UvData.Field.YMax]; 4318 data.DX=UvData.Field.Mesh; 4319 data.DY=UvData.Field.Mesh; 4320 % elseif isfield(Field,'AX')&& isfield(Field,'AY')&& isfield(Field,'A')%only image 4321 % np=size(Field.A); 4322 % meshx=(Field.AX(end)-Field.AX(1))/np(2); 4323 % meshy=abs(Field.AY(end)-Field.AY(1))/np(1); 4324 % data.RangeY=max(meshx,meshy); 4325 % data.RangeX=max(meshx,meshy); 4326 % data.DX=max(meshx,meshy); 4350 4327 end 4351 4328 if isfield(Field,'NbDim')&& isequal(Field.NbDim,3) … … 4360 4337 end 4361 4338 hset_object=findobj(allchild(0),'tag','set_object'); 4362 IndexObj=get(handles.ListObject,'Value') 4339 IndexObj=get(handles.ListObject,'Value'); 4363 4340 if ~isempty(hset_object) 4364 4341 delete(hset_object)% delete existing version of set_object
Note: See TracChangeset
for help on using the changeset viewer.