Changeset 404 for trunk/src/uvmat.m


Ignore:
Timestamp:
Apr 30, 2012, 6:46:45 PM (12 years ago)
Author:
sommeria
Message:

various bugs corrected. nc2struct_toolbox suppressed (correspond to obsolete versions of Matlab)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/uvmat.m

    r403 r404  
    19891989if ~isempty(filename)
    19901990    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}
    19971995        case {'civx','civdata','netcdf'};
    19981996            list_fields=get(handles.Fields,'String');% list menu fields
    1999             index_fields=get(handles.Fields,'Value');% selected string index
    2000             FieldName= list_fields{index_fields}; % selected field
     1997  %          index_fields=get(handles.Fields,'Value');% selected string index
     1998            FieldName= list_fields{get(handles.Fields,'Value')}; % selected field
    20011999            if ~strcmp(FieldName,'get_field...')
    20022000                if get(handles.FixVelType,'Value')
    20032001                    VelTypeList=get(handles.VelType,'String');
    20042002                    VelType=VelTypeList{get(handles.VelType,'Value')};
    2005 %                     VelType=setfield(handles);% read the velocity type.
    20062003                end
    20072004            end
     
    20292026    ParamIn.VelType=VelType;
    20302027    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);
    20322029    if ~isempty(errormsg)
    20332030        errormsg=['error in reading ' filename ': ' errormsg];
     
    20562053    end
    20572054    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}
    20612057        case {'civx','civdata','netcdf'};
    20622058            list_fields=get(handles.Fields_1,'String');% list menu fields
     
    20662062                    VelTypeList=get(handles.VelType_1,'String');
    20672063                    VelType_1=VelTypeList{get(handles.VelType_1,'Value')};% read the velocity type.
    2068 %                     VelType_1=setfield(handles);% read the velocity type.
    20692064                end
    20702065            end
     
    21022097        ParamIn.VelType=VelType_1;
    21032098        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);
    21052100        if ~isempty(errormsg)
    21062101            errormsg=['error in reading ' FieldName_1 ' in ' filename_1 ': ' errormsg];
     
    21242119test_veltype=0;
    21252120% if ~isequal(FileType,'netcdf')|| isequal(FieldName,'get_field...')
    2126 if (strcmp(FileType,'civx')||strcmp(FileType,'civdata'))&& ~strcmp(FieldName,'get_field...')
     2121if (strcmp(UvData.FileType{1},'civx')||strcmp(UvData.FileType{1},'civdata'))&& ~strcmp(FieldName,'get_field...')
    21272122    test_veltype=1;
    21282123    set(handles.VelType,'Visible','on')
    21292124    set(handles.VelType_1,'Visible','on')
    21302125    set(handles.FixVelType,'Visible','on')
    2131     menu=set_veltype_display(ParamOut.CivStage,FileType);
     2126    menu=set_veltype_display(ParamOut.CivStage,UvData.FileType{1});
    21322127    index_menu=strcmp(ParamOut.VelType,menu);%look for VelType in  the menu
    21332128    index_val=find(index_menu,1);
     
    21542149    set(handles.Fields_1,'String',[{''};ParamOut.FieldList]); %update the field menu
    21552150else
    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...')
    21572152        set(handles.VelType_1,'Visible','off')
    21582153    else
     
    22282223    end
    22292224    %% 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')
    22312226        Field{1}.X=Field{1}.X(Field{1}.FF==0);
    22322227        Field{1}.Y=Field{1}.Y(Field{1}.FF==0);
     
    22352230        [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);
    22362231    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)
    22382233        %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')
    22402235            Field{2}.X=Field{2}.X(Field{2}.FF==0);
    22412236            Field{2}.Y=Field{1}.Y(Field{2}.FF==0);
     
    22562251
    22572252%% combine the two input fields (e.g. substract velocity fields)
     2253Field{1}.FieldList=[{ParamOut.FieldName} {ParamOut.ColorVar}];
    22582254if numel(Field)==2
     2255    Field{2}.FieldList=[{ParamOut_1.FieldName} {ParamOut_1.ColorVar}];
    22592256   [UvData.Field,errormsg]=sub_field(Field{1},Field{2}); 
    22602257else
     
    22652262    return
    22662263end
    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
    22682266
    22692267%% get bounds and mesh (needed for mouse action and to open set_object)
    22702268test_x=0;
    22712269test_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);
    22732271if ~isempty(errormsg)
    22742272    errormsg=['error in uvmat/refresh_field/check_field_structure: ' errormsg];
     
    23362334    else
    23372335        VarIndex=CellVarIndex{imax}; % list of variable indices
    2338         DimIndex=UvData.Field.VarDimIndex{VarIndex(1)}; %list of dim indices for the variable
    2339         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));
    23402338        DX=(XMax-XMin)/(nbpoints_x-1);
    23412339        if NbDim >1
    2342             nbpoints_y=UvData.Field.DimValue(DimIndex(NbDim-1));
     2340            nbpoints_y=DimValue(DimIndex(NbDim-1));
    23432341            DY=(YMax-YMin)/(nbpoints_y-1);
    23442342        end
    23452343        if NbDim==3
    2346             nbpoints_z=UvData.Field.DimValue(DimIndex(1));
     2344            nbpoints_z=DimValue(DimIndex(1));
    23472345            DZ=(ZMax-ZMin)/(nbpoints_z-1);
    23482346            UvData.Field.Mesh=(DX*DY*DZ)^(1/3);
     
    23522350            UvData.Field.Mesh=DX;%sqrt(DX*DY);
    23532351        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;
    23542361    end
    23552362end
     
    23622369    ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider
    23632370    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
    23722372    end
    23732373    if test_set_object% reinitiate the GUI set_object
     
    23802380        UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen
    23812381        UvData.Object{1}.Angle=[0 0 0];
    2382 %         UvData.Object{1}.Theta=0;
    2383 %         UvData.Object{1}.Psi=0;
    23842382        UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR
    2385 %         PlotHandles=get_plot_handles(handles);
    23862383        UvData.Object{1}.Name='1-PLANE';
    23872384        UvData.Object{1}.enable_plot=1;
     
    24602457     PlotParam{1}.Vectors.ListColorCode= {'rgb'};
    24612458end
    2462 keeplim(1)=get(handles.CheckFixLimits,'Value');% test for fixed graph limits
     2459%keeplim(1)=get(handles.CheckFixLimits,'Value');% test for fixed graph limits
    24632460PosColorbar{1}=UvData.OpenParam.PosColorbar;%prescribe the colorbar position on the uvmat interface
    24642461
     
    24712468        %PlotParam{2}=read_plot_param(plot_handles{2});%read plotting parameters on the viewinterface
    24722469        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');
    24742471        PosColorbar{2}='*'; %TODO: deal with colorbar position on view_field
    24752472    end
     
    24792476for imap=1:numel(IndexObj)
    24802477    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
    24972481        [ObjectData,errormsg]=proj_field(UvData.Field,UvData.Object{iobj});% project field on the object
    2498 %     end
     2482     end
    24992483    if ~isempty(errormsg)
    25002484        return
     
    25392523            end
    25402524            ObjectData.ListVarName(ind_off)=[];
    2541             ObjectData.VarDimIndex(ind_off)=[];
     2525            VarDimIndex(ind_off)=[];
    25422526            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')
    25452529                    ind_off=[ind_off ilist];
    25462530                end
    25472531            end
    2548             ObjectData.ListDimName(ind_off)=[];
    2549             ObjectData.DimValue(ind_off)=[];
     2532            ListDimName(ind_off)=[];
     2533            DimValue(ind_off)=[];
    25502534        end
    25512535    end
    25522536    if ~isempty(ObjectData)
     2537       
    25532538        PlotType='none'; %default
    25542539        if imap==2 && isempty(view_field_handle)
     
    32373222        data.CoordType=UvData.CoordType;
    32383223    end
    3239     if isfield(UvData,'Mesh')&~isempty(UvData.Mesh)
    3240         data.RangeY=UvData.Mesh;
    3241         data.RangeX=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;
    32443229    elseif isfield(UvData.Field,'AX')&isfield(UvData.Field,'AY')& isfield(UvData.Field,'A')%only image
    32453230        np=size(UvData.Field.A);
     
    43284313if isfield(UvData,'Field')
    43294314    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);
    43504327    end
    43514328    if isfield(Field,'NbDim')&& isequal(Field.NbDim,3)
     
    43604337end
    43614338hset_object=findobj(allchild(0),'tag','set_object');
    4362 IndexObj=get(handles.ListObject,'Value')
     4339IndexObj=get(handles.ListObject,'Value');
    43634340if ~isempty(hset_object)
    43644341    delete(hset_object)% delete existing version of set_object
Note: See TracChangeset for help on using the changeset viewer.