Changeset 179 for trunk/src/uvmat.m


Ignore:
Timestamp:
Jan 9, 2011, 12:56:28 PM (13 years ago)
Author:
sommeria
Message:

various bug repairs, in particular for 3D fields

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/uvmat.m

    r178 r179  
    5252%          .VelType_1: last velocity type (civ1, civ2...) for the second input series
    5353%          .FieldName_1: last field name(velocity, vorticity...) for the second input series
    54 %          .NbDim: number of space dimensions of the input field
    5554%          .ZMin, .ZMax: range of the z coordinate
    5655%..... to complement
     
    12251224    nburst_1=1;
    12261225    set(handles.Dt_txt,'String',['Dt=' num2str(1000/info.FramesPerSecond) 'ms']);%display the elementary time interval in millisec
    1227     time=[0:1/imainfo.FramesPerSecond:(imainfo.NumFrames-1)/imainfo.FramesPerSecond]';
     1226    time=(0:1/imainfo.FramesPerSecond:(imainfo.NumFrames-1)/imainfo.FramesPerSecond)';
    12281227    ColorType=imainfo.ImageType;%='truecolor' for color images
    12291228    hhh=which('mmreader');
     
    13331332else
    13341333    UvData.GeometryCalib_1=GeometryCalib;
    1335     if (isfield(GeometryCalib,'R')& ~isequal(GeometryCalib.R(2,1),0) & ~isequal(GeometryCalib.R(1,2),0)) |...
    1336         (isfield(GeometryCalib,'kappa1')& ~isequal(GeometryCalib.kappa1,0))
     1334    if (isfield(GeometryCalib,'R')&& ~isequal(GeometryCalib.R(2,1),0) && ~isequal(GeometryCalib.R(1,2),0)) ||...
     1335        (isfield(GeometryCalib,'kappa1')&& ~isequal(GeometryCalib.kappa1,0))
    13371336        set(handles.pxcm,'String','var')
    13381337        set(handles.pycm,'String','var')
     
    15911590end
    15921591num_i1_mask=mod(num_i1-1,MaskData.NbSlice)+1;
    1593 MaskData.NomType
    15941592MaskName=name_generator(MaskData.Base,num_i1_mask,num_j1,'.png',MaskData.NomType);
    15951593huvmat=get(handles.mask_test,'parent');
     
    22272225            if isfield(UvData.XmlData,'Npy')
    22282226                Npz=size(A,1)/UvData.XmlData.Npy;
    2229                 A=reshape(A,Npz,UvData.XmlData.Npy,UvData.XmlData.Npx);
     2227                A=reshape(A',UvData.XmlData.Npx,UvData.XmlData.Npy,Npz);
     2228                A=permute(A,[3 2 1]);
    22302229            end
    22312230        case 'multimage'
     
    22392238    Rangx=[0.5 npxy(2)-0.5]; % coordinates of the first and last pixel centers
    22402239    Rangy=[npxy(1)-0.5 0.5]; %
     2240    Field{1}.NbDim=2;%default
    22412241    Field{1}.AName='image';
    22422242    Field{1}.ListVarName={'AY','AX','A'}; %
     
    22472247             Field{1}.AX=[0.5 npxy(2)-0.5]; % coordinates of the first and last pixel centers
    22482248        else
     2249            Field{1}.NbDim=3;
    22492250            Field{1}.ListVarName=['AZ' Field{1}.ListVarName];
    22502251            Field{1}.VarDimName={'AZ','AY','AX',{'AZ','AY','AX'}};
    2251             Field{1}.AZ=[0.5 npxy(1)-0.5];
     2252            Field{1}.AZ=[npxy(1)-0.5 0.5];
    22522253            Field{1}.AY=[npxy(2)-0.5 0.5];
    22532254            Field{1}.AX=[0.5 npxy(3)-0.5]; % coordinates of the first and last pixel centers
     
    23422343            end
    23432344            CivStage=Field{1}.CivStage;
    2344             UvData.NbDim=Field{1}.nb_dim;
     2345            %UvData.NbDim=Field{1}.NbDim;
    23452346        end
    23462347    end
     
    24112412end
    24122413%put W as background image by default if NbDim=2:
    2413 if ~isfield(UvData,'NbDim')||isempty(UvData.NbDim)||~isequal(UvData.NbDim,3)
    2414     if UvData.NewSeries && isequal(get(handles.SubField,'Value'),0) && isfield(Field{1},'W') && ~isempty(Field{1}.W);
     2414if  UvData.NewSeries && isequal(get(handles.SubField,'Value'),0) && isfield(Field{1},'W') && ~isempty(Field{1}.W) && ~isequal(Field{1}.NbDim,3);
    24152415        set(handles.SubField,'Value',1);
    24162416        %menu=update_menu(handles.Fields_1,'w');%update the menu for the background scalar nd set the choice to 'w'
     
    24302430        set(handles.Fields_1,'Visible','on');
    24312431        Field{1}.AName='w';
    2432 %         testscal=1;
    2433     end
    24342432end           
    24352433
    24362434%multislice case
    2437 if ~isempty(filename) &&(~isfield(UvData,'NbDim') || isequal(UvData.NbDim,2))&&...%2D case
    2438       isfield(UvData,'XmlData') && isfield(UvData.XmlData,'GeometryCalib')&& isfield(UvData.XmlData.GeometryCalib,'SliceCoord')
    2439        siz=size(UvData.XmlData.GeometryCalib.SliceCoord);
    2440 %        if siz(1)>1
    2441 %            NbSlice=siz(1);
    2442 %        else
    2443 %            NbSlice=1;
    2444 %        end
    2445 end
     2435% if ~isempty(filename) &&(~isfield(UvData,'NbDim') || isequal(UvData.NbDim,2))&&...%2D case
     2436%       isfield(UvData,'XmlData') && isfield(UvData.XmlData,'GeometryCalib')&& isfield(UvData.XmlData.GeometryCalib,'SliceCoord')
     2437%        siz=size(UvData.XmlData.GeometryCalib.SliceCoord);
     2438% end
    24462439
    24472440%store the current open names, fields and vel types in uvmat interface
     
    24932486    Field{2}=calc_field(InputField_1,Field{2});
    24942487end
    2495 % combine the two input fields (e.g. substract velocity fields)
     2488
     2489%% combine the two input fields (e.g. substract velocity fields)
    24962490if numel(Field)==2
    2497    UvData.Field=sub_field(Field{1},Field{2}); %TO UPDATE FOR MORE GENERAL INPUT
     2491   UvData.Field=sub_field(Field{1},Field{2});
    24982492else
    24992493   UvData.Field=Field{1};
     
    25032497test_x=0;
    25042498test_z=0;% test for unstructured z coordinate
    2505 % UvData.ZMax=0;
    2506 % UvData.ZMin=0;%default
    2507 %UvData.Mesh=1; %default
    25082499[UvData.Field,errormsg]=check_field_structure(UvData.Field);
    25092500if ~isempty(errormsg)
     
    25132504[CellVarIndex,NbDim,VarType]=find_field_indices(UvData.Field);
    25142505[NbDim,imax]=max(NbDim);
    2515 % if isempty(imax)
    2516 % %    DimVarIndex=0;   
    2517 %     coord_x=[];
    2518 % else
    2519 % %     VarIndex=CellVarIndex{imax};
    2520 %     coord_x=VarType{imax}.coord_x;
    2521 % end
    2522 % if isfield(UvData,'NbDim') && ~isempty(UvData.NbDim)
    2523 %     NbDim=UvData.NbDim;
    2524 % else 
    2525 UvData.NbDim=NbDim;
    2526 % end
    25272506if ~isempty(VarType{imax}.coord_x)  && ~isempty(VarType{imax}.coord_y)    %unstructured coordinates
    25282507    XName=UvData.Field.ListVarName{VarType{imax}.coord_x};
     
    25302509    eval(['nbvec=length(UvData.Field.' XName ');'])%nbre of measurement points (e.g. vectors)
    25312510    test_x=1;%test for unstructured coordinates
    2532 elseif NbDim==2
    2533     YName=UvData.Field.ListVarName{VarType{imax}.coord(1)}; %structured coordinates
    2534     XName=UvData.Field.ListVarName{VarType{imax}.coord(2)};
    2535 elseif NbDim==3
     2511else %structured coordinate
     2512    YName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim-1)}; %structured coordinates
     2513    XName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim)};
     2514end
     2515if NbDim==3
    25362516    ZName=UvData.Field.ListVarName{VarType{imax}.coord(1)};%structured coordinates in 3D
    2537     YName=UvData.Field.ListVarName{VarType{imax}.coord(2)};
    2538     XName=UvData.Field.ListVarName{VarType{imax}.coord(3)};
    25392517    eval(['ZMax=max(UvData.Field.' ZName ');'])
    25402518    eval(['ZMin=min(UvData.Field.' ZName ');'])
     2519    test_z=1;
     2520    if isequal(ZMin,ZMax)%no z dependency
     2521        NbDim=2;
     2522        test_z=0;
     2523    end
    25412524end
    25422525eval(['XMax=max(UvData.Field.' XName ');'])
     
    25452528eval(['YMin=min(UvData.Field.' YName ');'])
    25462529eval(['nbvec=length(UvData.Field.' XName ');'])
    2547 if NbDim==3%
    2548     if ~isempty(CellVarIndex) && ~isempty(VarType{imax}.coord_z)%unstructured coordinate z
    2549 %         ZName=UvData.Field.ListVarName{VarType{imax}.coord_z};
    2550         eval(['ZMax=max(UvData.Field.' ZName ');'])
    2551         eval(['ZMin=min(UvData.Field.' ZName ');'])
    2552         test_z=1;   
    2553     elseif isfield(UvData,'Z')% usual civ data
    2554         ZMax=max(UvData.Z);
    2555         ZMin=min(UvData.Z);
    2556         test_z=1;
    2557     end
    2558     if isequal(ZMin,ZMax)%no z dependency
    2559         NbDim=2;
    2560         test_z=0;
    2561     end
    2562 end
    2563 if test_x
     2530if test_x %unstructured coordinates
    25642531    if test_z
    25652532        UvData.Field.Mesh=((XMax-XMin)*(YMax-YMin)*(ZMax-ZMin))/nbvec;% volume per vector
     
    25712538    VarIndex=CellVarIndex{imax}; % list of variable indices
    25722539    DimIndex=UvData.Field.VarDimIndex{VarIndex(1)}; %list of dim indices for the variable
    2573     nbpoints_y=UvData.Field.DimValue(DimIndex(1));
    2574     nbpoints_x=UvData.Field.DimValue(DimIndex(2));
    2575     DX=(XMax-XMin)/nbpoints_x;
    2576     DY=(YMax-YMin)/nbpoints_y;
    2577     UvData.Field.Mesh=sqrt(DX*DY);
    2578 end
     2540    nbpoints_y=UvData.Field.DimValue(DimIndex(NbDim-1));
     2541    nbpoints_x=UvData.Field.DimValue(DimIndex(NbDim));
     2542    DX=(XMax-XMin)/(nbpoints_x-1);
     2543    DY=(YMax-YMin)/(nbpoints_y-1);
     2544    if NbDim==3
     2545        nbpoints_z=UvData.Field.DimValue(DimIndex(1));
     2546        DZ=(ZMax-ZMin)/(nbpoints_z-1);
     2547        UvData.Field.Mesh=sqrt(DX*DY*DZ);
     2548        UvData.Field.ZMax=ZMax;
     2549        UvData.Field.ZMin=ZMin;
     2550    else
     2551        UvData.Field.Mesh=sqrt(DX*DY);
     2552    end
     2553end
     2554UvData.Field.NbDim=NbDim;
    25792555UvData.Field.XMax=XMax;
    25802556UvData.Field.XMin=XMin;
    2581 UvData.Field.YMax=XMax;
    2582 UvData.Field.YMin=XMin;
    2583 if NbDim==3
    2584     UvData.Field.ZMax=ZMax;
    2585     UvData.Field.ZMin=ZMin;
    2586 end
    2587 
    2588 %case of structured coordinates
    2589 
    2590 % if  isempty(coord_x) && ~isempty(CellVarIndex)
    2591 %     VarIndex=CellVarIndex{imax}; % list of variable indices
    2592 %     DimIndex=UvData.Field.VarDimIndex{VarIndex(1)}; %list of dim indices for the variable
    2593 %     if NbDim==3
    2594 %         nbpoints=UvData.Field.DimValue(DimIndex(1));
    2595 %         if isfield(VarType{imax},'coord_3')&& ~isequal(VarType{imax}.coord_3,0) % z is a dimension variable
    2596 %             ZName=UvData.Field.ListVarName{VarType{imax}.coord_3};
    2597 %             eval(['UvData.ZMax=max(UvData.Field.' ZName ');'])
    2598 %             eval(['UvData.ZMin=min(UvData.Field.' ZName ');'])
    2599 %         else
    2600 %             testcoord_z=0;
    2601 %             if length(UvData.Field.VarAttribute)>=VarIndex(1)
    2602 %                 if isfield(UvData.Field.VarAttribute{VarIndex(1)},'Coord_1')%regular grid
    2603 %                     Coord_z=UvData.Field.VarAttribute{VarIndex(1)}.Coord_1;
    2604 %                     UvData.ZMax=max(Coord_z);
    2605 %                     UvData.ZMin=min(Coord_z);
    2606 %                     testcoord_z=1;
    2607 %                 end
    2608 %             end
    2609 %             if ~testcoord_z
    2610 %                   UvData.ZMin=1;
    2611 %                   UvData.ZMax=UvData.Field.DimValue(DimIndex(1));
    2612 %             end
    2613 %         end
    2614 %         Field.Mesh=(UvData.ZMax-UvData.ZMin)/(nbpoints-1);
    2615 %     elseif NbDim==2
    2616 %         nbpoints_y=UvData.Field.DimValue(DimIndex(1));       
    2617 %         Yvar=VarType{imax}.coord_y;
    2618 %         if Yvar~=0  % x is a dimension variable
    2619 %             YName=UvData.Field.ListVarName{Yvar};
    2620 %             eval(['UvData.YMax=max(UvData.Field.' YName ');'])
    2621 %             eval(['UvData.YMin=min(UvData.Field.' YName ');'])
    2622 %         else
    2623 %             testcoord_y=0;
    2624 %             if ~testcoord_y
    2625 %                   UvData.YMin=1;
    2626 %                   UvData.YMax=UvData.Field.DimValue(DimIndex(1));
    2627 %             end
    2628 %         end
    2629 %         DY=(UvData.YMax-UvData.YMin)/(nbpoints_y-1);
    2630 %         nbpoints_x=UvData.Field.DimValue(DimIndex(2));
    2631 %         Xvar=VarType{imax}.coord_x;
    2632 %         if Xvar~=0  % x is a dimension variable
    2633 %             XName=UvData.Field.ListVarName{Xvar};
    2634 %             eval(['UvData.XMax=max(UvData.Field.' XName ');'])
    2635 %             eval(['UvData.XMin=min(UvData.Field.' XName ');'])
    2636 %         else
    2637 %             testcoord_x=0;
    2638 %             if ~testcoord_x
    2639 %                   UvData.XMin=1;
    2640 %                   UvData.XMax=UvData.Field.DimValue(DimIndex(2));
    2641 %             end
    2642 %         end
    2643 %         DX=(UvData.XMax-UvData.XMin)/(nbpoints_x-1);
    2644 %         Field.Mesh= sqrt(DX*DY);
    2645 %     end
    2646 % end
    2647 
    2648 %create a default projection menuplane
     2557UvData.Field.YMax=YMax;
     2558UvData.Field.YMin=YMin;
     2559
     2560%% create a default projection menuplane
    26492561UvData.Object{1}.Style='plane';%main plotting plane
    26502562UvData.Object{1}.ProjMode='projection';%main plotting plane
     2563UvData.Object{1}.DisplayHandle_uvmat=[]; %plane not visible in uvmat
     2564
     2565
     2566%% 3D case (menuvolume)
     2567if NbDim==3% && UvData.NewSeries
     2568    test_set_object=1;
     2569    hset_object=findobj(allchild(0),'tag','set_object');
     2570    ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider
     2571    ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider
     2572    if ~isempty(hset_object)
     2573        hhset_object=guidata(hset_object);
     2574        ZBounds_old(1)=get(hhset_object.z_slider,'Min');
     2575        ZBounds_old(2)=get(hhset_object.z_slider,'Max');
     2576        if isequal(ZBounds_old,ZBounds)
     2577            test_set_object=0;
     2578        else
     2579            delete(test_set_object);
     2580        end
     2581    end
     2582    if test_set_object% reinitiate set_object
     2583        delete_object(1);
     2584        UvData.Object{1}.Style='plane';%main plotting plane
     2585        UvData.Object{1}.ProjMode='projection';%main plotting plane
     2586        UvData.Object{1}.DisplayHandle_uvmat=[]; %plane not visible in uvmat
     2587        UvData.Object{1}.NbDim=NbDim;%test for 3D objects
     2588        UvData.Object{1}.RangeZ=UvData.Field.Mesh;%main plotting plane
     2589        UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen
     2590        UvData.Object{1}.Phi=0;
     2591        UvData.Object{1}.Theta=0;
     2592        UvData.Object{1}.Psi=0;
     2593        UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR
     2594        PlotHandles=get_plot_handles(handles);
     2595        UvData.Object{1}.Name='1-PLANE';
     2596        UvData.Object{1}.enable_plot=1;
     2597        set_object(UvData.Object{1},PlotHandles,ZBounds);
     2598        set(handles.list_object_1,'Value',1);
     2599    end
     2600    %multilevel case (single menuplane in a 3D space)
     2601elseif isfield(UvData,'Z')
     2602    if isfield(UvData,'CoordType')&& isequal(UvData.CoordType,'phys') && isfield(UvData,'XmlData')
     2603        XmlData=UvData.XmlData;
     2604        if isfield(XmlData,'PlanePos')
     2605            UvData.Object{1}.Coord=XmlData.PlanePos(UvData.ZIndex,:);
     2606        end
     2607        if isfield(XmlData,'PlaneAngle')
     2608            siz=size(XmlData.PlaneAngle);
     2609            indangle=min(siz(1),UvData.ZIndex);%take first angle if a single angle is defined (translating scanning)
     2610            UvData.Object{1}.Phi=XmlData.PlaneAngle(indangle,1);
     2611            UvData.Object{1}.Theta=XmlData.PlaneAngle(indangle,2);
     2612            UvData.Object{1}.Psi=XmlData.PlaneAngle(indangle,3);
     2613        end
     2614    elseif isfield(UvData,'ZIndex')
     2615        UvData.Object{1}.ZObject=UvData.ZIndex;
     2616    end
     2617end
    26512618if ~isfield(UvData.Object{1},'plotaxes')
    26522619    UvData.Object{1}.plotaxes=handles.axes3;%default plotting axis
    26532620    set(handles.list_object_1,'Value',1);
    26542621    set(handles.list_object_1,'String',{'1-PLANE'}); 
    2655 end
    2656 
    2657 %3D case (menuvolume)
    2658 if NbDim==3 && UvData.NewSeries
    2659     UvData.Object{1}.NbDim=UvData.NbDim;%test for 3D objects
    2660     UvData.Object{1}.RangeZ=UvData.Field.Mesh;%main plotting plane
    2661     UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen
    2662     UvData.Object{1}.Phi=0;
    2663     UvData.Object{1}.Theta=0;
    2664     UvData.Object{1}.Psi=0;
    2665     UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR 
    2666     PlotHandles=get_plot_handles(handles);
    2667     ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider
    2668     ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider
    2669     UvData.Object{1}.Name='1-PLANE';
    2670     UvData.Object{1}.enable_plot=1;
    2671     set_object(UvData.Object{1},PlotHandles,ZBounds);
    2672     set(handles.list_object_1,'Value',1);
    2673 %multilevel case (single menuplane in a 3D space)
    2674 elseif isfield(UvData,'Z')
    2675     if isfield(UvData,'CoordType')&& isequal(UvData.CoordType,'phys') && isfield(UvData,'XmlData')
    2676         XmlData=UvData.XmlData;
    2677         if isfield(XmlData,'PlanePos')
    2678              UvData.Object{1}.Coord=XmlData.PlanePos(UvData.ZIndex,:);
    2679         end
    2680         if isfield(XmlData,'PlaneAngle')
    2681             siz=size(XmlData.PlaneAngle);
    2682             indangle=min(siz(1),UvData.ZIndex);%take first angle if a single angle is defined (translating scanning)             
    2683             UvData.Object{1}.Phi=XmlData.PlaneAngle(indangle,1);
    2684             UvData.Object{1}.Theta=XmlData.PlaneAngle(indangle,2);
    2685             UvData.Object{1}.Psi=XmlData.PlaneAngle(indangle,3);
    2686         end
    2687     elseif isfield(UvData,'ZIndex')
    2688         UvData.Object{1}.ZObject=UvData.ZIndex;
    2689     end
    26902622end
    26912623
     
    35693501set(handles.uvmat,'UserData',UvData)
    35703502setfield(handles);% update the field structure ('civ1'....)
    3571 if ~isfield(UvData,'NewSeries')|isequal(UvData.NewSeries,0)
     3503if ~isfield(UvData,'NewSeries')||isequal(UvData.NewSeries,0)
    35723504    run0_Callback(hObject, eventdata, handles)
    35733505end
     
    38303762npx=size(UvData.Field.A,2);
    38313763npy=size(UvData.Field.A,1);
    3832 xi=[0.5:npx-0.5];
    3833 yi=[0.5:npy-0.5];
     3764xi=0.5:npx-0.5;
     3765yi=0.5:npy-0.5;
    38343766[Xi,Yi]=meshgrid(xi,yi);
    38353767if isfield(UvData,'Object')
     
    38843816RootPath=get(handles.RootPath,'String');
    38853817RootFile=get(handles.RootFile,'String');
    3886 if ~isempty(RootFile)&(isequal(RootFile(1),'/')| isequal(RootFile(1),'\'))
     3818if ~isempty(RootFile)&&(isequal(RootFile(1),'/')|| isequal(RootFile(1),'\'))
    38873819        RootFile(1)=[];
    38883820end
     
    41844116    Amax=double(max(max(max(FieldHisto))));%max of image
    41854117    if isequal(Amin,Amax)
    4186        Histo.Txt=['uniform field =' num2str(Amin)];
     4118        msgbox_uvmat('WARNING',['uniform field =' num2str(Amin)]);
    41874119    else
    4188     Histo.ListVarName={FieldName,'histo'};
    4189     if numel(nxy)==2
    4190         Histo.VarDimName={FieldName,FieldName}; %dimensions for the histogram
    4191     else %color images
    4192         Histo.VarDimName={FieldName,{FieldName,'rgb'}}; %dimensions for the histogram
    4193     end
    4194     %unit
    4195     units=[]; %default
    4196     for ivar=1:numel(Field.ListVarName)   
    4197         if strcmp(Field.ListVarName{ivar},FieldName)
    4198             if isfield(Field,'VarAttribute') && numel(Field.VarAttribute)>=ivar && isfield(Field.VarAttribute{ivar},'units')
    4199                 units=Field.VarAttribute{ivar}.units;
    4200                 break
     4120        Histo.ListVarName={FieldName,'histo'};
     4121        if isequal(Field.NbDim,3)
     4122            Histo.VarDimName={FieldName,FieldName}; %dimensions for the histogram
     4123        else
     4124            if numel(nxy)==2
     4125                Histo.VarDimName={FieldName,FieldName}; %dimensions for the histogram
     4126            else
     4127                Histo.VarDimName={FieldName,{FieldName,'rgb'}}; %dimensions for the histogram
    42014128            end
    42024129        end
    4203     end
    4204     if ~isempty(units)
    4205         Histo.VarAttribute{1}.units=units;
    4206     end
    4207     eval(['Histo.' FieldName '=linspace(Amin,Amax,50);'])%absissa values for histo
    4208     for col=1:size(FieldHisto,3)
    4209         B=FieldHisto(:,:,col);
    4210         C=reshape(double(B),1,nxy(1)*nxy(2));% reshape in a vector
    4211        eval(['Histo.histo(:,col)=hist(C, Histo.' FieldName ');']);  %calculate histogram
    4212     end
    4213     set(haxes,'XLimMode','auto')%reset auto mode (after zoom effect)
    4214     set(haxes,'YLimMode','auto')
    4215     plot_field(Histo,haxes);
     4130        %unit
     4131        units=[]; %default
     4132        for ivar=1:numel(Field.ListVarName)
     4133            if strcmp(Field.ListVarName{ivar},FieldName)
     4134                if isfield(Field,'VarAttribute') && numel(Field.VarAttribute)>=ivar && isfield(Field.VarAttribute{ivar},'units')
     4135                    units=Field.VarAttribute{ivar}.units;
     4136                    break
     4137                end
     4138            end
     4139        end
     4140        if ~isempty(units)
     4141            Histo.VarAttribute{1}.units=units;
     4142        end
     4143        eval(['Histo.' FieldName '=linspace(Amin,Amax,50);'])%absissa values for histo
     4144        if isequal(Field.NbDim,3)
     4145            C=reshape(double(FieldHisto),1,[]);% reshape in a vector
     4146            eval(['Histo.histo(:,1)=hist(C, Histo.' FieldName ');']);  %calculate histogram
     4147        else
     4148            for col=1:size(FieldHisto,3)
     4149                B=FieldHisto(:,:,col);
     4150                C=reshape(double(B),1,nxy(1)*nxy(2));% reshape in a vector
     4151                eval(['Histo.histo(:,col)=hist(C, Histo.' FieldName ');']);  %calculate histogram
     4152            end
     4153        end
     4154        set(haxes,'XLimMode','auto')%reset auto mode (after zoom effect)
     4155        set(haxes,'YLimMode','auto')
     4156        plot_field(Histo,haxes);
    42164157    end
    42174158end
     
    43764317% colcode.CName= list_code{index_code(1)}; % selected field used for vector color
    43774318colcode.FixedCbounds=1;
    4378 vec_C=colcode.MinC+(colcode.MaxC-colcode.MinC)*[0.5:width-0.5]/width;%sample of vec_C values from min to max
     4319vec_C=colcode.MinC+(colcode.MaxC-colcode.MinC)*(0.5:width-0.5)/width;%sample of vec_C values from min to max
    43794320[colorlist,col_vec]=set_col_vec(colcode,vec_C);
    43804321oneheight=ones(1,height);
     
    45104451hother=findobj('Tag','proj_object');%find all the proj objects
    45114452for iobj=1:length(hother)
    4512     if isequal(get(hother(iobj),'Type'),'rectangle')|isequal(get(hother(iobj),'Type'),'patch')
     4453    if isequal(get(hother(iobj),'Type'),'rectangle')||isequal(get(hother(iobj),'Type'),'patch')
    45134454        set(hother(iobj),'EdgeColor','b')
    45144455        if isequal(get(hother(iobj),'FaceColor'),'m')
     
    47914732        end
    47924733    end
    4793     % flag=~flag;
     4734   
    47944735    %mask name
    47954736    RootPath=get(handles.RootPath,'String');
    47964737    RootFile=get(handles.RootFile,'String');
    4797     if ~isempty(RootFile)&(isequal(RootFile(1),'/')| isequal(RootFile(1),'\'))
     4738    if ~isempty(RootFile)&&(isequal(RootFile(1),'/')|| isequal(RootFile(1),'\'))
    47984739        RootFile(1)=[];
    47994740    end
Note: See TracChangeset for help on using the changeset viewer.