Ignore:
Timestamp:
Jul 29, 2012, 11:18:31 PM (12 years ago)
Author:
sommeria
Message:

various improvments and corrections
dtatatree_browser tested

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/transform_field/phys.m

    r494 r507  
    1616% Data_1, CalibData_1: same as Data, CalibData for the second field.
    1717
    18 function [DataOut,DataOut_1]=phys(varargin)
     18function [DataOut,DataOut_1]=phys(DataIn,XmlData,DataIn_1,XmlData_1)
    1919% A FAIRE: 1- verifier si DataIn est une 'field structure'(.ListVarName'):
    2020% chercher ListVarAttribute, for each field (cell of variables):
     
    2525%            'D_i' if '.Role='vector_x,...',
    2626%              'scalar', else (thenno change except scale factor)
     27%% set GUI config
     28DataOut=[];
     29DataOut_1=[]; %default second  output field
     30if strcmp(DataIn,'*')
     31    if isfield(XmlData,'GeometryCalib')&& isfield(XmlData.GeometryCalib,'CoordUnit')
     32        DataOut.CoordUnit=XmlData.GeometryCalib.CoordUnit;
     33    end
     34    return
     35end
     36
    2737%% analyse input and set default output
    28 DataOut=varargin{1};%default first output field
    29 DataOut_1=[]; %default second  output field
     38DataOut=DataIn;%default first output field
    3039if nargin>=2 % nargin =nbre of input variables
    31     if isfield(varargin{2},'GeometryCalib')
    32         Calib{1}=varargin{2}.GeometryCalib;
     40    if isfield(XmlData,'GeometryCalib')
     41        Calib{1}=XmlData.GeometryCalib;
    3342    else
    3443        Calib{1}=[];
    3544    end
    3645    if nargin>=3  %two input fields
    37         DataOut_1=varargin{3};%default second output field
    38         if nargin>=4 && isfield(varargin{4},'GeometryCalib')
    39             Calib{2}=varargin{4}.GeometryCalib;
     46        DataOut_1=DataIn_1;%default second output field
     47        if nargin>=4 && isfield(XmlData_1,'GeometryCalib')
     48            Calib{2}=XmlData_1.GeometryCalib;
    4049        else
    4150            Calib{2}=Calib{1};
     
    4554
    4655%% get the z index defining the section plane
    47 if isfield(varargin{1},'ZIndex')&&~isempty(varargin{1}.ZIndex)&&~isnan(varargin{1}.ZIndex)
    48     ZIndex=varargin{1}.ZIndex;
     56if isfield(DataIn,'ZIndex')&&~isempty(DataIn.ZIndex)&&~isnan(DataIn.ZIndex)
     57    ZIndex=DataIn.ZIndex;
    4958else
    5059    ZIndex=1;
     
    5766        return %bad calib parameter input
    5867    end
    59     if ~(isfield(varargin{1},'CoordUnit')&& strcmp(varargin{1}.CoordUnit,'pixel'))
     68    if ~(isfield(DataIn,'CoordUnit')&& strcmp(DataIn.CoordUnit,'pixel'))
    6069        return % transform only fields in pixel coordinates
    6170    end
    62     DataOut=phys_1(varargin{1},Calib{1},ZIndex);% transform coordiantes and velocity components
     71    DataOut=phys_1(DataIn,Calib{1},ZIndex);% transform coordiantes and velocity components
    6372    %case of images or scalar: in case of two input fields, we need to project the transform  on the same regular grid
    64     if isfield(varargin{1},'A') && isfield(varargin{1},'AX') && ~isempty(varargin{1}.AX) && isfield(varargin{1},'AY')&&...
    65                                            ~isempty(varargin{1}.AY) && length(varargin{1}.A)>1
     73    if isfield(DataIn,'A') && isfield(DataIn,'AX') && ~isempty(DataIn.AX) && isfield(DataIn,'AY')&&...
     74                                           ~isempty(DataIn.AY) && length(DataIn.A)>1
    6675        iscalar=1;
    67         A{1}=varargin{1}.A;
     76        A{1}=DataIn.A;
    6877    end
    6978end
     
    8392%% transform second field if relevant
    8493if ~isempty(DataOut_1)
    85     if isfield(varargin{3},'ZIndex') && ~isequal(varargin{3}.ZIndex,ZIndex)
     94    if isfield(DataIn_1,'ZIndex') && ~isequal(DataIn_1.ZIndex,ZIndex)
    8695        DataOut_1.Txt='different plane indices for the two input fields';
    8796        return
     
    9099        return %bad calib parameter input
    91100    end
    92     if ~(isfield(varargin{3},'CoordUnit')&& strcmp(varargin{3}.CoordUnit,'pixel'))
     101    if ~(isfield(DataIn_1,'CoordUnit')&& strcmp(DataIn_1.CoordUnit,'pixel'))
    93102        return % transform only fields in pixel coordinates
    94103    end
     
    108117        end
    109118    end
    110     if isfield(varargin{3},'A')&&isfield(varargin{3},'AX')&&~isempty(varargin{3}.AX) && isfield(varargin{3},'AY')&&...
    111             ~isempty(varargin{3}.AY)&&length(varargin{3}.A)>1
     119    if isfield(DataIn_1,'A')&&isfield(DataIn_1,'AX')&&~isempty(DataIn_1.AX) && isfield(DataIn_1,'AY')&&...
     120            ~isempty(DataIn_1.AY)&&length(DataIn_1.A)>1
    112121        iscalar=iscalar+1;
    113122        Calib{iscalar}=Calib{2};
    114         A{iscalar}=varargin{3}.A;
     123        A{iscalar}=DataIn_1.A;
    115124    end
    116125end
Note: See TracChangeset for help on using the changeset viewer.