source: trunk/src/uvmat_doc/FUNCTIONS_DOC/sub_field.html @ 37

Last change on this file since 37 was 37, checked in by sommeria, 14 years ago

create_grid.fig ,
uvmat_doc and all the included files added

File size: 20.6 KB
RevLine 
[37]1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of sub_field</title>
6  <meta name="keywords" content="sub_field">
7  <meta name="description" content="'sub_field': combines two input fields + mask for uvmat">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../index.html">Home</a> &gt;  <a href="index.html">.</a> &gt; sub_field.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>sub_field
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
24<div class="box"><strong>'sub_field': combines two input fields + mask for uvmat</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
27<div class="box"><strong>function SubData=sub_field(UvData,Field); </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
30<div class="fragment"><pre class="comment">'sub_field': combines two input fields + mask for uvmat
31-----------------------------------------------------------------------
32 function SubData=sub_field(UvData,Field)
33
34 OUPUT:
35 SubData: structure representing the resulting field
36
37 INPUT:
38 UvData: main structure UvData associated to the uvmat GUI as 'UserData'
39 Field: cell of Matlab structures representing the input fields
40 
41    -- TODO: need to be rationalized --</pre></div>
42
43<!-- crossreference -->
44<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
45This function calls:
46<ul style="list-style-image:url(../matlabicon.gif)">
47<li><a href="calc_field.html" class="code" title="function [DataOut,errormsg]=calc_field(FieldName,DataIn)">calc_field</a>      'calc_field': defines fields (velocity, vort, div...) from civx data and calculate them</li><li><a href="griddata_uvmat.html" class="code" title="function ZI = griddata_uvmat(X,Y,Z,XI,YI)">griddata_uvmat</a> 'griddata_uvmat': function griddata_uvmat(vec2_X,vec2_Y,vec2_U,vec_X,vec_Y,'linear')</li><li><a href="proj_grid.html" class="code" title="function [A,rangx,rangy]=proj_grid(vec_X,vec_Y,vec_A,rgx_in,rgy_in,npxy_in)">proj_grid</a>    'proj_grid': project  fields with unstructured coordinantes on a regular grid</li></ul>
48This function is called by:
49<ul style="list-style-image:url(../matlabicon.gif)">
50<li><a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>    'uvmat': function associated with the GUI 'uvmat.fig' for images and data field visualization</li></ul>
51<!-- crossreference -->
52
53
54<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
55<div class="fragment"><pre>0001 <span class="comment">%'sub_field': combines two input fields + mask for uvmat</span>
560002 <span class="comment">%-----------------------------------------------------------------------</span>
570003 <span class="comment">% function SubData=sub_field(UvData,Field)</span>
580004 <span class="comment">%</span>
590005 <span class="comment">% OUPUT:</span>
600006 <span class="comment">% SubData: structure representing the resulting field</span>
610007 <span class="comment">%</span>
620008 <span class="comment">% INPUT:</span>
630009 <span class="comment">% UvData: main structure UvData associated to the uvmat GUI as 'UserData'</span>
640010 <span class="comment">% Field: cell of Matlab structures representing the input fields</span>
650011 <span class="comment">%</span>
660012 <span class="comment">%    -- TODO: need to be rationalized --</span>
670013
680014 <a name="_sub0" href="#_subfunctions" class="code">function SubData=sub_field(UvData,Field);</a>
690015
700016 SubData=UvData;<span class="comment">%default</span>
710017 <span class="keyword">if</span> isfield(SubData,<span class="string">'ListVarName'</span>)
720018     SubData=rmfield(SubData,<span class="string">'ListVarName'</span>);
730019 <span class="keyword">end</span>
740020 <span class="keyword">if</span> ~exist(<span class="string">'Field'</span>,<span class="string">'var'</span>)
750021     <span class="keyword">return</span>
760022 <span class="keyword">end</span>
770023 <span class="keyword">if</span> ~iscell(Field)
780024     <span class="keyword">return</span>
790025 <span class="keyword">end</span>
800026 nbfield=length(Field);
810027 <span class="keyword">if</span> nbfield==1 &amp; isfield(Field{1},<span class="string">'ListVarName'</span>)
820028     SubData=Field{1};
830029     <span class="keyword">if</span> isfield(UvData,<span class="string">'Object'</span>)
840030         SubData.Object=UvData.Object;
850031     <span class="keyword">end</span>
860032     <span class="keyword">if</span> isfield(UvData,<span class="string">'XmlData'</span>)
870033         SubData.XmlData=UvData.XmlData;
880034     <span class="keyword">end</span>
890035     <span class="keyword">return</span>
900036 <span class="keyword">end</span>
910037
920038 <span class="comment">%transfer error messages</span>
930039 testerror=0;
940040 <span class="keyword">if</span> ~isfield(SubData,<span class="string">'Txt'</span>)
950041     <span class="keyword">for</span> ifield=1:nbfield
960042         <span class="keyword">if</span> isfield(Field{ifield},<span class="string">'Txt'</span>)
970043             SubData.Txt=Field{ifield}.Txt;
980044             testerror=1;
990045         <span class="keyword">end</span>
1000046     <span class="keyword">end</span>
1010047 <span class="keyword">end</span>
1020048
1030049 <span class="comment">%fields</span>
1040050 <span class="keyword">if</span> nbfield &gt;=1
1050051    <span class="keyword">if</span> isfield(Field{1},<span class="string">'dt'</span>)
1060052        SubData.dt=Field{1}.dt;
1070053    <span class="keyword">elseif</span> isfield(SubData,<span class="string">'dt'</span>)
1080054        SubData=rmfield(SubData,<span class="string">'dt'</span>);
1090055    <span class="keyword">end</span>
1100056    <span class="keyword">if</span> isfield(Field{1},<span class="string">'CoordType'</span>)
1110057        SubData.CoordType=Field{1}.CoordType;
1120058        <span class="comment">%A FAIRE: Case of Field{2}.CoordType different</span>
1130059    <span class="keyword">end</span>
1140060     <span class="comment">%background scalar</span>
1150061     <span class="keyword">if</span> isfield(Field{1},<span class="string">'AName'</span>)
1160062         SubData.AName=Field{1}.AName;
1170063         <span class="keyword">if</span> nbfield &gt;=2 &amp; isfield(Field{2},<span class="string">'AName'</span>)&amp; ~isfield(Field{2},<span class="string">'A'</span>)
1180064             SubData.Txt=<span class="string">'ERROR: no substraction of background scalar'</span>;
1190065         <span class="keyword">end</span>
1200066     <span class="keyword">elseif</span> nbfield&gt;=2 &amp; isfield(Field{2},<span class="string">'AName'</span>)
1210067         SubData.AName=Field{2}.AName;<span class="comment">%transfer the second scalar or image field</span>
1220068     <span class="keyword">elseif</span> isfield(SubData,<span class="string">'AName'</span>)
1230069         SubData=rmfield(SubData,<span class="string">'AName'</span>);
1240070     <span class="keyword">end</span> 
1250071     testA=0;
1260072     <span class="keyword">if</span> isfield(Field{1},<span class="string">'A'</span>)&amp; isfield(Field{1},<span class="string">'AX'</span>) &amp; isfield(Field{1},<span class="string">'AY'</span>)
1270073         SubData.A=Field{1}.A;
1280074         SubData.AX=Field{1}.AX;
1290075         SubData.AY=Field{1}.AY;
1300076         <span class="keyword">if</span> nbfield &gt;=2 &amp; isfield(Field{2},<span class="string">'A'</span>)&amp; isfield(Field{2},<span class="string">'AX'</span>) &amp; isfield(Field{2},<span class="string">'AY'</span>)
1310077             <span class="keyword">if</span> isequal(Field{2}.AX,Field{1}.AX) &amp; isequal(Field{2}.AY,Field{1}.AY) &amp;<span class="keyword">...</span>
1320078                               isequal(size(Field{2}.A),size(Field{1}.A))
1330079                 SubData.A=double(Field{1}.A)-double(Field{2}.A);   
1340080                 <span class="keyword">if</span> isa(Field{1}.A,<span class="string">'uint8'</span>)
1350081                     SubData.A=int8(SubData.A);
1360082                 <span class="keyword">elseif</span> isa(Field{1}.A,<span class="string">'uint16'</span>)
1370083                     SubData.A=int16(SubData.A);<span class="comment">%signed integer</span>
1380084                 <span class="keyword">end</span>
1390085             <span class="keyword">else</span>
1400086                 SubData.Txt=<span class="string">'ERROR in image substraction: unequal image sizes'</span>;
1410087             <span class="keyword">end</span>
1420088         <span class="keyword">end</span>
1430089         testA=1;
1440090     <span class="keyword">elseif</span> nbfield&gt;=2 &amp; isfield(Field{2},<span class="string">'A'</span>)&amp; isfield(Field{2},<span class="string">'AX'</span>) &amp; isfield(Field{2},<span class="string">'AY'</span>)
1450091         SubData.A=Field{2}.A;<span class="comment">%transfer the second scalar or image field</span>
1460092         SubData.AX=Field{2}.AX;
1470093         SubData.AY=Field{2}.AY;
1480094         testA=1;
1490095     <span class="keyword">end</span> 
1500096     <span class="keyword">if</span> ~isfield(SubData,<span class="string">'NbDim'</span>)
1510097         SubData.NbDim=2;<span class="comment">%nbdim=2 by default</span>
1520098     <span class="keyword">end</span>
1530099 <span class="comment">%          if ~testA</span>
1540100         <span class="comment">%coordinates</span>
1550101         ivel=1;
1560102         <span class="keyword">if</span> isfield(Field{1},<span class="string">'X'</span>)
1570103             SubData.X=Field{1}.X;
1580104         <span class="keyword">elseif</span> nbfield&gt;=2 &amp; isfield(Field{2},<span class="string">'X'</span>)
1590105             SubData.X=Field{2}.X;
1600106             ivel=2;
1610107         <span class="keyword">elseif</span> isfield(SubData,<span class="string">'X'</span>)
1620108             SubData=rmfield(SubData,<span class="string">'X'</span>);
1630109         <span class="keyword">end</span>
1640110         <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'Y'</span>)
1650111             SubData.Y=Field{ivel}.Y;
1660112         <span class="keyword">elseif</span> isfield(SubData,<span class="string">'Y'</span>)
1670113             SubData=rmfield(SubData,<span class="string">'Y'</span>);
1680114         <span class="keyword">end</span>
1690115         <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'Z'</span>)
1700116             SubData.Z=Field{ivel}.Z;
1710117             <span class="comment">%don't remove Z (set by uvmat)</span>
1720118         <span class="keyword">end</span>
1730119
1740120         <span class="comment">%velocity components and derived scalar</span>
1750121         <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'U'</span>)
1760122             SubData.U=Field{ivel}.U;
1770123         <span class="keyword">elseif</span> isfield(SubData,<span class="string">'U'</span>)
1780124             SubData=rmfield(SubData,<span class="string">'U'</span>);
1790125         <span class="keyword">end</span>
1800126         <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'V'</span>)
1810127             SubData.V=Field{ivel}.V;
1820128         <span class="keyword">elseif</span> isfield(SubData,<span class="string">'V'</span>)
1830129             SubData=rmfield(SubData,<span class="string">'V'</span>);
1840130         <span class="keyword">end</span>
1850131         <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'W'</span>)
1860132             SubData.W=Field{ivel}.W;
1870133         <span class="keyword">elseif</span> isfield(SubData,<span class="string">'W'</span>)
1880134             SubData=rmfield(SubData,<span class="string">'W'</span>);
1890135         <span class="keyword">end</span>
1900136 <span class="comment">%          else</span>
1910137 <span class="comment">%              ivel=1;</span>
1920138 <span class="comment">%         end</span>
1930139     <span class="keyword">if</span> nbfield&gt;=2 &amp; isfield(Field{2},<span class="string">'X'</span>) &amp; ivel==1 <span class="comment">%two velocity fields exist</span>
1940140         test_A=0;
1950141         <span class="keyword">if</span> isfield(Field{1},<span class="string">'A'</span>) ||(isfield(Field{1},<span class="string">'AName'</span>) &amp;&amp; ~isempty(Field{1}.AName)) <span class="comment">%if the first field is for a scalar</span>
1960142             <span class="keyword">if</span> ~isfield(Field{1},<span class="string">'A'</span>)
1970143                 test_A=1;
1980144                 SubData.A=<a href="calc_field.html" class="code" title="function [DataOut,errormsg]=calc_field(FieldName,DataIn)">calc_field</a>(Field{1}.AName,Field{1});
1990145                 SubData.AX=Field{1}.X;
2000146                 SubData.AY=Field{1}.Y;
2010147                 SubData.AName=Field{1}.AName;
2020148                 <span class="comment">%remove false vectors</span>
2030149                 <span class="keyword">if</span> isfield(Field{1},<span class="string">'FF'</span>)
2040150                     ind_sel=find(Field{1}.FF==0);<span class="comment">%good indices</span>
2050151                     SubData.A=SubData.A(ind_sel);
2060152                     SubData.AX=SubData.AX(ind_sel);
2070153                     SubData.AY=SubData.AY(ind_sel);
2080154                 <span class="keyword">end</span>
2090155                 [SubData.A,SubData.AX,SubData.AY]=<span class="keyword">...</span>
2100156                 <a href="proj_grid.html" class="code" title="function [A,rangx,rangy]=proj_grid(vec_X,vec_Y,vec_A,rgx_in,rgy_in,npxy_in)">proj_grid</a>(SubData.AX,SubData.AY,SubData.A,[],[],<span class="string">'np&gt;256'</span>);
2110157             <span class="keyword">end</span>
2120158         <span class="keyword">end</span>
2130159         <span class="keyword">if</span> isfield(Field{2},<span class="string">'A'</span>)||(isfield(Field{2},<span class="string">'AName'</span>) &amp;&amp; ~isempty(Field{2}.AName) )<span class="comment">%if the second field is for a scalar</span>
2140160             testA=1;       
2150161             <span class="keyword">if</span> ~isfield(Field{2},<span class="string">'A'</span>)
2160162                 A=<a href="calc_field.html" class="code" title="function [DataOut,errormsg]=calc_field(FieldName,DataIn)">calc_field</a>(Field{2}.AName,Field{2});
2170163                 AX=Field{2}.X;
2180164                 AY=Field{2}.Y;
2190165                 AName=Field{2}.AName;
2200166                 <span class="comment">%remove false vectors</span>
2210167                 <span class="keyword">if</span> isfield(Field{2},<span class="string">'FF'</span>)
2220168                     ind_sel=find(Field{2}.FF==0);<span class="comment">%good indices</span>
2230169                     A=A(ind_sel);
2240170                     AX=AX(ind_sel);
2250171                     AY=AY(ind_sel);
2260172                 <span class="keyword">end</span>
2270173                 <span class="keyword">if</span> test_A==1;<span class="comment">%substract the two scalars</span>
2280174                     <span class="keyword">if</span> SubData.NbDim==3
2290175                         SubData.Txt=<span class="string">'ERROR: no substraction of 3D fields'</span>;
2300176                     <span class="keyword">elseif</span> isequal(AName,SubData.AName)
2310177                         [A,AX,AY]=<a href="proj_grid.html" class="code" title="function [A,rangx,rangy]=proj_grid(vec_X,vec_Y,vec_A,rgx_in,rgy_in,npxy_in)">proj_grid</a>(AX,AY,A,SubData.AX,SubData.AY,size(SubData.A));
2320178                         SubData.A=SubData.A-A;
2330179                     <span class="keyword">else</span>
2340180                         SubData.Txt=<span class="string">'ERROR: attempt to substract two scalars of different kind'</span>;
2350181                     <span class="keyword">end</span>
2360182                 <span class="keyword">else</span>
2370183                     [SubData.A,SubData.AX,SubData.AY]=<a href="proj_grid.html" class="code" title="function [A,rangx,rangy]=proj_grid(vec_X,vec_Y,vec_A,rgx_in,rgy_in,npxy_in)">proj_grid</a>(AX,AY,A,[],[],<span class="string">'np&gt;256'</span>);
2380184                     SubData.AName=AName;
2390185                     test_A=1;
2400186                 <span class="keyword">end</span>
2410187              <span class="keyword">end</span>
2420188          <span class="keyword">end</span>
2430189          <span class="keyword">if</span> test_A==0<span class="comment">% substract the velocity fields</span>
2440190             <span class="comment">%A REVOIR cas 3 composantes 2D</span>
2450191             <span class="keyword">if</span> isfield(Field{2},<span class="string">'FF'</span>)&amp; ~isempty(Field{2}.FF)
2460192                 index2=find(Field{2}.FF==0);
2470193                 Field{2}.X=Field{2}.X(index2);
2480194                 Field{2}.Y=Field{2}.Y(index2);
2490195                 Field{2}.U=Field{2}.U(index2);
2500196                 Field{2}.V=Field{2}.V(index2);
2510197             <span class="keyword">end</span>
2520198             <span class="keyword">if</span>  ~isequal(Field{1}.X,Field{2}.X) | ~isequal(Field{1}.Y,Field{2}.Y); <span class="comment">% if the vector positions are not the same</span>
2530199                 Field{2}.U=<a href="griddata_uvmat.html" class="code" title="function ZI = griddata_uvmat(X,Y,Z,XI,YI)">griddata_uvmat</a>(Field{2}.X,Field{2}.Y,Field{2}.U,Field{1}.X,Field{1}.Y);  <span class="comment">%interpolate vectors in the second field</span>
2540200                 Field{2}.V=<a href="griddata_uvmat.html" class="code" title="function ZI = griddata_uvmat(X,Y,Z,XI,YI)">griddata_uvmat</a>(Field{2}.X,Field{2}.Y,Field{2}.V,Field{1}.X,Field{1}.Y); <span class="comment">%  to the positions  of the first field</span>
2550201             <span class="keyword">end</span> 
2560202             SubData.U=Field{1}.U-Field{2}.U;<span class="comment">% take the interpolated first field - the second field</span>
2570203             SubData.V=Field{1}.V-Field{2}.V;
2580204         <span class="keyword">end</span>
2590205     <span class="keyword">end</span>
2600206     <span class="comment">%remove scalar data if no AName</span>
2610207     <span class="keyword">if</span> ~testA<span class="comment">%~isfield(SubData,'AName')</span>
2620208         <span class="keyword">if</span> isfield(SubData,<span class="string">'A'</span>)
2630209             SubData=rmfield(SubData,<span class="string">'A'</span>);
2640210         <span class="keyword">end</span>
2650211         <span class="keyword">if</span> isfield(SubData,<span class="string">'AX'</span>)
2660212             SubData=rmfield(SubData,<span class="string">'AX'</span>);
2670213         <span class="keyword">end</span>
2680214         <span class="keyword">if</span> isfield(SubData,<span class="string">'AY'</span>)
2690215             SubData=rmfield(SubData,<span class="string">'AY'</span>);
2700216         <span class="keyword">end</span>
2710217     <span class="keyword">end</span>
2720218     <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'C'</span>)
2730219         SubData.C=Field{ivel}.C;
2740220     <span class="keyword">elseif</span> isfield(SubData,<span class="string">'C'</span>)
2750221         SubData=rmfield(SubData,<span class="string">'C'</span>);
2760222     <span class="keyword">end</span> 
2770223     <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'F'</span>)
2780224         SubData.F=Field{ivel}.F;
2790225     <span class="keyword">elseif</span> isfield(SubData,<span class="string">'F'</span>)
2800226         SubData=rmfield(SubData,<span class="string">'F'</span>);
2810227     <span class="keyword">end</span> 
2820228     <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'FF'</span>)
2830229         SubData.FF=Field{ivel}.FF;
2840230     <span class="keyword">elseif</span> isfield(SubData,<span class="string">'FF'</span>)
2850231         SubData=rmfield(SubData,<span class="string">'FF'</span>);
2860232     <span class="keyword">end</span>
2870233     <span class="comment">%velocity derivatives</span>
2880234     <span class="keyword">if</span> isfield(Field{ivel},<span class="string">'DjUi'</span>)
2890235         SubData.DjUi=Field{ivel}.DjUi;
2900236     <span class="keyword">elseif</span> isfield(SubData,<span class="string">'DjUi'</span>
2910237         SubData=rmfield(SubData,<span class="string">'DjUi'</span>);
2920238     <span class="keyword">end</span>       
2930239 <span class="keyword">end</span></pre></div>
294<hr><address>Generated on Fri 13-Nov-2009 11:17:03 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
295</body>
296</html>
Note: See TracBrowser for help on using the repository browser.