source: trunk/src/uvmat_doc/FUNCTIONS_DOC/read_get_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: 39.5 KB
Line 
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 read_get_field</title>
6  <meta name="keywords" content="read_get_field">
7  <meta name="description" content="'read_get_field': read the list of selected variables from the GUI get_field (SAME AS THE FIRST">
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; read_get_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>read_get_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>'read_get_field': read the list of selected variables from the GUI get_field (SAME AS THE FIRST</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 [SubField,errormsg]=read_get_field(hget_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">'read_get_field': read the list of selected variables from the GUI get_field (SAME AS THE FIRST
31 INPUT:
32 hget_field: handles of the GUI get_field</pre></div>
33
34<!-- crossreference -->
35<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
36This function calls:
37<ul style="list-style-image:url(../matlabicon.gif)">
38<li><a href="nc2struct.html" class="code" title="function [Data,var_detect,ichoice]=nc2struct(nc,ListVarName)">nc2struct</a>    'nc2struct': transform a netcdf file in a corresponding matlab structure</li></ul>
39This function is called by:
40<ul style="list-style-image:url(../matlabicon.gif)">
41<li><a href="get_field.html" class="code" title="function varargout = get_field(varargin)">get_field</a>        'get_field': display variables and attributes from a Netcdf file, and plot selected fields</li><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>
42<!-- crossreference -->
43
44<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
45<ul style="list-style-image:url(../matlabicon.gif)">
46<li><a href="#_sub1" class="code">function VarIndex_y=name2index(cell_str,ListVarName)</a></li></ul>
47<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
48<div class="fragment"><pre>0001 <span class="comment">%'read_get_field': read the list of selected variables from the GUI get_field (SAME AS THE FIRST</span>
490002 <span class="comment">% INPUT:</span>
500003 <span class="comment">% hget_field: handles of the GUI get_field</span>
510004
520005 <a name="_sub0" href="#_subfunctions" class="code">function [SubField,errormsg]=read_get_field(hget_field)</a>
530006 <span class="comment">%---------------------------------------------------------</span>
540007 SubField=[];<span class="comment">%default</span>
550008 errormsg=[]; <span class="comment">%default</span>
560009 handles=guidata(hget_field);<span class="comment">%handles of GUI elements in get_field</span>
570010 Field=get(hget_field,<span class="string">'UserData'</span>);<span class="comment">% read the current field Structure in the get_field interface</span>
580011 <span class="keyword">if</span> isfield(Field,<span class="string">'VarAttribute'</span>)
590012     VarAttribute=Field.VarAttribute;
600013 <span class="keyword">else</span>
610014     VarAttribute={};
620015 <span class="keyword">end</span>
630016
640017 <span class="comment">% select the indices of field variables for 2D plots</span>
650018 test_1Dplot=get(handles.check_1Dplot,<span class="string">'Value'</span>);
660019 test_scalar=get(handles.check_scalar,<span class="string">'Value'</span>);
670020 test_vector=get(handles.check_vector,<span class="string">'Value'</span>);
680021
690022 nbvar=0;
700023 empty_coord_x=0;
710024 empty_coord_y=0;
720025 dimname_y={};
730026 ListVarName={};
740027 VarDimName={};
750028 SubVarAttribute={};
760029 dim_x=0;
770030 dim_y=0;
780031 dim_z=0;
790032 dim_vec_x=0;
800033 dim_vec_y=0;
810034 dim_vec_z=0;
820035 c_index=[];
830036 <span class="keyword">if</span> test_1Dplot
840037      <span class="comment">% select ordinate variable(s)</span>
850038     inputlist=get(handles.ordinate,<span class="string">'String'</span>);
860039     val=get(handles.ordinate,<span class="string">'Value'</span>);<span class="comment">% selection(s) for ordinate</span>
870040     VarNameCell=inputlist(val); <span class="comment">%names of the variable(s) in the list</span>
880041     <span class="keyword">for</span> ivar=1:length(VarNameCell)
890042         VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameCell{ivar},Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
900043         dimname_y{ivar}=Field.VarDimName{VarIndex};<span class="comment">% name of the corresponding dimension</span>
910044         <span class="keyword">if</span> iscell(dimname_y{ivar})
920045             dimname_y{ivar}=dimname_y{ivar}{1};<span class="comment">%take the first dimension in case of a matrix</span>
930046         <span class="keyword">end</span>
940047         <span class="keyword">if</span> ~strcmp(dimname_y{1},dimname_y{ivar})
950048             errormsg=<span class="string">'unequal dimensions for the set of selected ordinate variables'</span>;
960049             <span class="keyword">return</span>
970050         <span class="keyword">end</span>
980051         nbvar=nbvar+1;
990052         ListVarName{nbvar}=Field.ListVarName{VarIndex};
1000053         VarDimName{nbvar}=Field.VarDimName{VarIndex};
1010054         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
1020055         SubVarAttribute{nbvar}.Role=<span class="string">'scalar'</span>;           
1030056     <span class="keyword">end</span>
1040057     field_var_index=VarIndex; <span class="comment">%store the last variable index to determine the absissa dimension if not defiend</span>
1050058     
1060059         <span class="comment">% select abscissa variable</span>
1070060     inputlist=get(handles.abscissa,<span class="string">'String'</span>);
1080061     val=get(handles.abscissa,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
1090062     VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
1100063     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
1110064 <span class="comment">%     dimname_x=[];%default</span>
1120065     <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
1130066         coord_x_name=dimname_y{1};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
1140067         empty_coord_x=1;
1150068     <span class="keyword">else</span>
1160069         dimname_x=Field.VarDimName{VarIndex};
1170070         <span class="keyword">if</span> numel(dimname_x)~=1
1180071             errormsg=<span class="string">'abscissa must be a one-dimensional variable'</span>;
1190072             <span class="keyword">return</span>
1200073         <span class="keyword">end</span>
1210074         <span class="keyword">if</span> ~isempty(dimname_x) &amp;&amp; ~strcmp(dimname_y{1},dimname_x)
1220075             errormsg=<span class="string">'inconsistent dimensions for ordinate and abscissa'</span>;
1230076             <span class="keyword">return</span>
1240077         <span class="keyword">end</span>
1250078         nbvar=nbvar+1;
1260079         ListVarName{nbvar}=Field.ListVarName{VarIndex};
1270080         VarDimName{nbvar}=Field.VarDimName{VarIndex};
1280081         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
1290082         SubVarAttribute{nbvar}.Role=<span class="string">'coord_x'</span>;
1300083     <span class="keyword">end</span>   
1310084 <span class="keyword">end</span>
1320085 test3D=strcmp(get(handles.coord_z_scalar,<span class="string">'Visible'</span>),<span class="string">'on'</span>)||strcmp(get(handles.coord_z_vectors,<span class="string">'Visible'</span>),<span class="string">'on'</span>);
1330086 A_index=[];
1340087 <span class="keyword">if</span> test_scalar
1350088     <span class="comment">%scalar variable</span>
1360089     inputlist=get(handles.scalar,<span class="string">'String'</span>);
1370090     <span class="keyword">if</span> isempty(inputlist)
1380091         errormsg=<span class="string">'empty input field'</span>;
1390092         <span class="keyword">return</span>
1400093     <span class="keyword">end</span>
1410094     val=get(handles.scalar,<span class="string">'Value'</span>);<span class="comment">%selected indices in the ordinate listbox</span>
1420095     VarNameScalar=inputlist{val}; <span class="comment">%name of the variable in the list</span>
1430096     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameScalar,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
1440097     dimname_A=Field.VarDimName{VarIndex};
1450098     nbvar=nbvar+1;
1460099     ListVarName{nbvar}=Field.ListVarName{VarIndex};
1470100     A_index=nbvar;
1480101     VarDimName{nbvar}=dimname_A;
1490102     SubVarAttribute{nbvar}=VarAttribute{VarIndex};
1500103     SubVarAttribute{nbvar}.Role=<span class="string">'scalar'</span>;
1510104     field_var_index=VarIndex; <span class="comment">%store the last variable index to determine the absissa dimension if not defiend</span>
1520105
1530106      <span class="comment">% select x variable</span>
1540107     inputlist=get(handles.coord_x_scalar,<span class="string">'String'</span>);
1550108     val=get(handles.coord_x_scalar,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
1560109     VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
1570110     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
1580111     <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
1590112         coord_x_name=dimname_A{2};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
1600113         empty_coord_x=1;
1610114     <span class="keyword">else</span>
1620115         dimname_x=Field.VarDimName{VarIndex};
1630116          <span class="comment">%check consistency of dimensions</span>
1640117         <span class="keyword">if</span> ~isequal(dimname_x,dimname_A)<span class="comment">% case of dimension variables</span>
1650118             <span class="keyword">for</span> icoord=1:numel(dimname_A)<span class="comment">% look for coincidence of dimension with one of the dimensions of the scalar</span>
1660119                 <span class="keyword">if</span> strcmp(dimname_x,dimname_A{icoord})<span class="comment">% a dimension variable</span>
1670120                     dim_x=icoord;
1680121                     <span class="keyword">break</span>
1690122                 <span class="keyword">end</span>
1700123             <span class="keyword">end</span>
1710124             <span class="keyword">if</span> ~dim_x
1720125                 errormsg=<span class="string">'inconsistent dimensions for coordinate x'</span>;
1730126                 <span class="keyword">return</span>
1740127             <span class="keyword">end</span>
1750128         <span class="keyword">end</span>
1760129         nbvar=nbvar+1;
1770130         ListVarName{nbvar}=Field.ListVarName{VarIndex};
1780131         VarDimName{nbvar}=dimname_x;
1790132         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
1800133         <span class="keyword">if</span> dim_x
1810134             SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
1820135         <span class="keyword">else</span>
1830136             SubVarAttribute{nbvar}.Role=<span class="string">'coord_x'</span>;<span class="comment">%abcissa with unstructured coordinates</span>
1840137         <span class="keyword">end</span>
1850138     <span class="keyword">end</span>
1860139     
1870140     <span class="comment">% select y variable</span>
1880141     inputlist=get(handles.coord_y_scalar,<span class="string">'String'</span>);
1890142     val=get(handles.coord_y_scalar,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
1900143     VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
1910144     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
1920145     <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
1930146         coord_y_name=dimname_A{1};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
1940147         empty_coord_y=1;
1950148     <span class="keyword">else</span>
1960149         dimname_y=Field.VarDimName{VarIndex};
1970150          <span class="comment">%check consistency of dimensions</span>
1980151         <span class="keyword">if</span> ~isequal(dimname_y,dimname_A)
1990152             <span class="keyword">for</span> icoord=1:numel(dimname_A)
2000153                 <span class="keyword">if</span> strcmp(dimname_y,dimname_A{icoord})<span class="comment">%  a dimension variable</span>
2010154                      dim_y=icoord;
2020155                     <span class="keyword">break</span>
2030156                 <span class="keyword">end</span>
2040157             <span class="keyword">end</span>
2050158             <span class="keyword">if</span> ~dim_y
2060159                 errormsg=<span class="string">'inconsistent dimensions for coordinate x'</span>;
2070160                 <span class="keyword">return</span>
2080161             <span class="keyword">end</span>
2090162         <span class="keyword">end</span>
2100163         nbvar=nbvar+1;
2110164         ListVarName{nbvar}=Field.ListVarName{VarIndex};
2120165         VarDimName{nbvar}=dimname_y;
2130166         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
2140167         <span class="keyword">if</span> dim_y
2150168             SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
2160169         <span class="keyword">else</span>
2170170             SubVarAttribute{nbvar}.Role=<span class="string">'coord_y'</span>;<span class="comment">%ordinate with unstructured coordinates</span>
2180171         <span class="keyword">end</span>
2190172     <span class="keyword">end</span>
2200173     
2210174         <span class="comment">% select z variable</span>
2220175    <span class="keyword">if</span> test3D
2230176         inputlist=get(handles.coord_z_scalar,<span class="string">'String'</span>);
2240177         val=get(handles.coord_z_scalar,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
2250178         VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
2260179         VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
2270180         <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
2280181 <span class="comment">%             coord_z_name=dimname_A{1};% name of the x coordinate = dimension of the plotted quantity</span>
2290182             empty_coord_z=1;
2300183         <span class="keyword">else</span>
2310184             dimname_z=Field.VarDimName{VarIndex};
2320185              <span class="comment">%check consistency of dimensions</span>
2330186             <span class="keyword">if</span> ~isequal(dimname_z,dimname_A)
2340187                 <span class="keyword">for</span> icoord=1:numel(dimname_A)
2350188                     <span class="keyword">if</span> strcmp(dimname_z,dimname_A{icoord})<span class="comment">%  a dimension variable</span>
2360189                          dim_z=icoord;
2370190                         <span class="keyword">break</span>
2380191                     <span class="keyword">end</span>
2390192                 <span class="keyword">end</span>
2400193                 <span class="keyword">if</span> ~dim_z
2410194                     errormsg=<span class="string">'inconsistent dimensions for coordinate z'</span>;
2420195                     <span class="keyword">return</span>
2430196                 <span class="keyword">end</span>
2440197             <span class="keyword">end</span>
2450198             nbvar=nbvar+1;
2460199             ListVarName{nbvar}=Field.ListVarName{VarIndex};
2470200             VarDimName{nbvar}=dimname_z;
2480201             SubVarAttribute{nbvar}=VarAttribute{VarIndex};
2490202             <span class="keyword">if</span> dim_z
2500203                 SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
2510204             <span class="keyword">else</span>
2520205                 SubVarAttribute{nbvar}.Role=<span class="string">'coord_z'</span>;<span class="comment">%z coordinate with unstructured coordinates</span>
2530206             <span class="keyword">end</span>
2540207         <span class="keyword">end</span>
2550208    <span class="keyword">end</span>
2560209 <span class="keyword">end</span>
2570210
2580211 <span class="keyword">if</span> test_vector
2590212     <span class="comment">%select u variable</span>
2600213     inputlist=get(handles.vector_x,<span class="string">'String'</span>);
2610214     <span class="keyword">if</span> isempty(inputlist)
2620215         errormsg=<span class="string">'empty input field'</span>;
2630216         <span class="keyword">return</span>
2640217     <span class="keyword">end</span>
2650218     val=get(handles.vector_x,<span class="string">'Value'</span>);<span class="comment">%selected indices in the ordinate listbox</span>
2660219     VarNameU=inputlist{val}; <span class="comment">%name of the variable in the list</span>
2670220     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameU,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
2680221     nbvar=nbvar+1;
2690222     u_index=nbvar;
2700223     ListVarName{nbvar}=Field.ListVarName{VarIndex};
2710224     dimname_u=Field.VarDimName{VarIndex};
2720225     VarDimName{nbvar}=dimname_u;
2730226     SubVarAttribute{nbvar}=VarAttribute{VarIndex};
2740227     SubVarAttribute{nbvar}.Role=<span class="string">'vector_x'</span>;
2750228     field_var_index=VarIndex; <span class="comment">%store the last variable index to determine the absissa dimension if not defiend</span>
2760229     
2770230     <span class="comment">%scalar v variable</span>
2780231     inputlist=get(handles.vector_y,<span class="string">'String'</span>);
2790232     val=get(handles.vector_y,<span class="string">'Value'</span>);<span class="comment">%selected indices in the ordinate listbox</span>
2800233     VarNameV=inputlist{val}; <span class="comment">%name of the variable in the list</span>
2810234     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameV,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
2820235      <span class="comment">%check consistency of dimensions with u</span>
2830236     dimname_v=Field.VarDimName{VarIndex};
2840237     <span class="keyword">if</span> ~isequal(dimname_v,dimname_u)
2850238        errormsg=<span class="string">'inconsistent dimensions for u and v'</span>;
2860239         <span class="keyword">return</span>
2870240     <span class="keyword">end</span>
2880241     nbvar=nbvar+1;
2890242     v_index=nbvar;
2900243     ListVarName{nbvar}=Field.ListVarName{VarIndex};
2910244     VarDimName{nbvar}=dimname_u;
2920245     SubVarAttribute{nbvar}=VarAttribute{VarIndex};
2930246     SubVarAttribute{nbvar}.Role=<span class="string">'vector_y'</span>;
2940247     
2950248      <span class="comment">% select x variable</span>
2960249     inputlist=get(handles.coord_x_vectors,<span class="string">'String'</span>);
2970250     val=get(handles.coord_x_vectors,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
2980251     VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
2990252     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
3000253     <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
3010254         coord_x_name=dimname_u{2};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
3020255         empty_coord_x=1;
3030256     <span class="keyword">else</span>
3040257         <span class="keyword">if</span> ~isequal(Field.VarDimName{VarIndex},dimname_u)
3050258             <span class="keyword">for</span> icoord=1:numel(dimname_u)
3060259                 <span class="keyword">if</span> strcmp(Field.VarDimName{VarIndex},dimname_u{icoord})<span class="comment">% x not a dimension variable</span>
3070260                     dim_vec_x=icoord;
3080261                     <span class="keyword">break</span>
3090262                 <span class="keyword">end</span>
3100263             <span class="keyword">end</span>
3110264             <span class="keyword">if</span> ~dim_vec_x
3120265                 errormsg=<span class="string">'inconsistent dimensions for u and x'</span> ;
3130266                 <span class="keyword">return</span>
3140267             <span class="keyword">end</span>
3150268         <span class="keyword">end</span>
3160269         nbvar=nbvar+1;
3170270         ListVarName{nbvar}=Field.ListVarName{VarIndex};
3180271         VarDimName{nbvar}=Field.VarDimName{VarIndex};
3190272         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
3200273         <span class="keyword">if</span> dim_vec_x
3210274             SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
3220275         <span class="keyword">else</span>
3230276             SubVarAttribute{nbvar}.Role=<span class="string">'coord_x'</span>;<span class="comment">%absissa with unstructured coordinates</span>
3240277         <span class="keyword">end</span>
3250278     <span class="keyword">end</span>
3260279     
3270280       <span class="comment">% select y variable</span>
3280281     inputlist=get(handles.coord_y_vectors,<span class="string">'String'</span>);
3290282     val=get(handles.coord_y_vectors,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
3300283     VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
3310284     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
3320285             <span class="comment">%check consistency of dimensions</span>
3330286     <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
3340287         coord_y_name=dimname_u{1};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
3350288         empty_coord_y=1;
3360289     <span class="keyword">else</span>
3370290         <span class="keyword">if</span> ~isequal(Field.VarDimName{VarIndex},dimname_u)
3380291             <span class="keyword">for</span> icoord=1:numel(dimname_u)
3390292                 <span class="keyword">if</span> strcmp(Field.VarDimName{VarIndex},dimname_u{icoord})<span class="comment">% x not a dimension variable</span>
3400293                     dim_vec_y=1;
3410294                     <span class="keyword">break</span>
3420295                 <span class="keyword">end</span>
3430296             <span class="keyword">end</span>
3440297             <span class="keyword">if</span> ~dim_vec_y
3450298                 errormsg=<span class="string">'inconsistent dimensions for u and y'</span>;
3460299                 <span class="keyword">return</span>
3470300             <span class="keyword">end</span>
3480301         <span class="keyword">end</span>
3490302         nbvar=nbvar+1;
3500303         ListVarName{nbvar}=Field.ListVarName{VarIndex};
3510304         VarDimName{nbvar}=Field.VarDimName{VarIndex};
3520305         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
3530306         <span class="keyword">if</span> dim_vec_y
3540307             SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
3550308         <span class="keyword">else</span>
3560309             SubVarAttribute{nbvar}.Role=<span class="string">'coord_y'</span>;<span class="comment">%ordinate with unstructured coordinates</span>
3570310         <span class="keyword">end</span>
3580311     <span class="keyword">end</span>
3590312     
3600313           <span class="comment">% select z variable</span>
3610314     <span class="keyword">if</span> test3D
3620315         inputlist=get(handles.coord_z_vectors,<span class="string">'String'</span>);
3630316         val=get(handles.coord_z_vectors,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
3640317         VarName=inputlist{val}; <span class="comment">%name of the variable in the list</span>
3650318         VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarName,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
3660319                 <span class="comment">%check consistency of dimensions</span>
3670320         <span class="keyword">if</span> isempty(VarIndex)<span class="comment">% default abscissa = matrix index</span>
3680321             coord_z_name=dimname_u{1};<span class="comment">% name of the x coordinate = dimension of the plotted quantity</span>
3690322             empty_coord_z=1;
3700323         <span class="keyword">else</span>
3710324             <span class="keyword">if</span> ~isequal(Field.VarDimName{VarIndex},dimname_u)
3720325                 <span class="keyword">for</span> icoord=1:numel(dimname_u)
3730326                     <span class="keyword">if</span> strcmp(Field.VarDimName{VarIndex},dimname_u{icoord})<span class="comment">% x not a dimension variable</span>
3740327                         dim_vec_z=icoord;
3750328                         <span class="keyword">break</span>
3760329                     <span class="keyword">end</span>
3770330                 <span class="keyword">end</span>
3780331                 <span class="keyword">if</span> ~dim_vec_z
3790332                     errormsg=<span class="string">'inconsistent dimensions for u and z'</span>;
3800333                     <span class="keyword">return</span>
3810334                 <span class="keyword">end</span>
3820335             <span class="keyword">end</span>
3830336             nbvar=nbvar+1;
3840337             ListVarName{nbvar}=Field.ListVarName{VarIndex};
3850338             VarDimName{nbvar}=Field.VarDimName{VarIndex};
3860339             SubVarAttribute{nbvar}=VarAttribute{VarIndex};
3870340             <span class="keyword">if</span> dim_vec_z
3880341                 SubVarAttribute{nbvar}.Role=<span class="string">'dimvar'</span>;<span class="comment">% dimension variable</span>
3890342             <span class="keyword">else</span>
3900343                 SubVarAttribute{nbvar}.Role=<span class="string">'coord_z'</span>;<span class="comment">%ordinate with unstructured coordinates</span>
3910344             <span class="keyword">end</span>
3920345         <span class="keyword">end</span>
3930346         
3940347          <span class="comment">%scalar w variable</span>
3950348         inputlist=get(handles.vector_z,<span class="string">'String'</span>);
3960349         val=get(handles.vector_z,<span class="string">'Value'</span>);<span class="comment">%selected indices in the ordinate listbox</span>
3970350         VarNameW=inputlist{val}; <span class="comment">%name of the variable in the list</span>
3980351         VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameW,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
3990352          <span class="comment">%check consistency of dimensions with u</span>
4000353         dimname_w=Field.VarDimName{VarIndex};
4010354         <span class="keyword">if</span> ~isequal(dimname_w,dimname_u)
4020355            errormsg=<span class="string">'inconsistent dimensions for u and v'</span>;
4030356             <span class="keyword">return</span>
4040357         <span class="keyword">end</span>
4050358         nbvar=nbvar+1;
4060359         w_index=nbvar;
4070360         ListVarName{nbvar}=Field.ListVarName{VarIndex};
4080361         VarDimName{nbvar}=dimname_u;
4090362         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
4100363         SubVarAttribute{nbvar}.Role=<span class="string">'vector_z'</span>;
4110364     <span class="keyword">end</span> 
4120365     
4130366     <span class="comment">% select color variable</span>
4140367     inputlist=get(handles.vec_color,<span class="string">'String'</span>);
4150368     val=get(handles.vec_color,<span class="string">'Value'</span>);<span class="comment">% a single selection is expected for abscissa</span>
4160369     VarNameC=inputlist{val}; <span class="comment">%name of the variable in the list</span>
4170370     VarIndex=<a href="#_sub1" class="code" title="subfunction VarIndex_y=name2index(cell_str,ListVarName)">name2index</a>(VarNameC,Field.ListVarName);<span class="comment">%index of the variable in ListVarName</span>
4180371        <span class="comment">%check consistency of dimensions with u</span>
4190372     <span class="keyword">if</span> ~isempty(VarIndex)
4200373         <span class="keyword">if</span> ~isequal(Field.VarDimName{VarIndex},dimname_u)
4210374             errormsg=<span class="string">'inconsistent dimensions for u and v'</span>;
4220375             <span class="keyword">return</span>
4230376         <span class="keyword">end</span>
4240377         nbvar=nbvar+1;
4250378         c_index=nbvar;
4260379         ListVarName{nbvar}=Field.ListVarName{VarIndex};
4270380         VarDimName{nbvar}=Field.VarDimName{VarIndex};
4280381         SubVarAttribute{nbvar}=VarAttribute{VarIndex};
4290382         SubVarAttribute{nbvar}.Role=<span class="string">'scalar'</span>;
4300383     <span class="keyword">end</span>
4310384 <span class="keyword">end</span> 
4320385
4330386
4340387 <span class="comment">% get the input field</span>
4350388 inputfield=get(handles.inputfile,<span class="string">'String'</span>);
4360389 <span class="keyword">if</span> exist(inputfield,<span class="string">'file'</span>)<span class="comment">% read the input data corresponding to the list of selected varaibles</span>
4370390     SubField=<a href="nc2struct.html" class="code" title="function [Data,var_detect,ichoice]=nc2struct(nc,ListVarName)">nc2struct</a>(inputfield,ListVarName);
4380391 <span class="keyword">else</span>  <span class="comment">% subfield stored in memory</span>
4390392     SubField.ListVarName=ListVarName;
4400393     SubField.VarDimName=VarDimName;
4410394 <span class="keyword">end</span>
4420395 SubField.ListGlobalAttribute=[<span class="string">'InputFile'</span> SubField.ListGlobalAttribute];
4430396 SubField.InputFile=get(handles.inputfile,<span class="string">'String'</span>);
4440397 SubField.VarAttribute=SubVarAttribute;
4450398
4460399 <span class="comment">%permute indices if coord_y is not the first matrix index</span>
4470400 <span class="keyword">if</span> dim_x &amp;&amp; dim_y &amp;&amp; ~isempty(A_index)
4480401     DimCell=SubField.VarDimName{A_index};
4490402     <span class="keyword">if</span> dim_z
4500403         DimCell(1:3)=DimCell([dim_z dim_y dim_x]);
4510404         dim_end=[4:numel(DimCell)];
4520405         eval([<span class="string">'SubField.'</span> VarNameScalar <span class="string">'=permute(SubField.'</span> VarNameScalar <span class="string">',[dim_z dim_y dim_x dim_end]);'</span>])
4530406     <span class="keyword">else</span>
4540407         DimCell(1:2)=DimCell([dim_y dim_x]);
4550408         dim_end=[3:numel(DimCell)];
4560409         eval([<span class="string">'SubField.'</span> VarNameScalar <span class="string">'=permute(SubField.'</span> VarNameScalar <span class="string">',[dim_y dim_x dim_end]);'</span>])
4570410     <span class="keyword">end</span>
4580411     SubField.VarDimName{A_index}=DimCell;
4590412 <span class="keyword">end</span>
4600413
4610414 <span class="comment">%permute indices if ccord_y is not the first matrix index</span>
4620415 <span class="keyword">if</span> dim_vec_x &amp;&amp; dim_vec_y &amp;&amp; ~isempty(u_index)
4630416     DimCell=SubField.VarDimName{u_index};
4640417     <span class="keyword">if</span> dim_vec_z
4650418         DimCell(1:3)=DimCell([dim_vec_z dim_vec_y dim_vec_x]);
4660419         dim_end=[4:numel(DimCell)];
4670420         eval([<span class="string">'SubField.'</span> VarNameU <span class="string">'=permute(SubField.'</span> VarNameU <span class="string">',[dim_z dim_y dim_x dim_end]);'</span>])
4680421         eval([<span class="string">'SubField.'</span> VarNameV <span class="string">'=permute(SubField.'</span> VarNameV <span class="string">',[dim_z dim_y dim_x dim_end]);'</span>])
4690422         eval([<span class="string">'SubField.'</span> VarNameW <span class="string">'=permute(SubField.'</span> VarNameW <span class="string">',[dim_z dim_y dim_x dim_end]);'</span>])
4700423         <span class="keyword">if</span> ~isempty(c_index)
4710424             eval([<span class="string">'SubField.'</span> VarNameC <span class="string">'=permute(SubField.'</span> VarNameC <span class="string">',[dim_z dim_y dim_x dim_end];]);'</span>])
4720425             SubField.VarDimName{c_index}=DimCell;
4730426         <span class="keyword">end</span>
4740427         SubField.VarDimName{w_index}=DimCell;
4750428     <span class="keyword">else</span>
4760429         DimCell(1:2)=DimCell([dim_vec_y dim_vec_x]);
4770430         dim_end=[3:numel(DimCell)];
4780431         eval([<span class="string">'SubField.'</span> VarNameU <span class="string">'=permute(SubField.'</span> VarNameU <span class="string">',[dim_y dim_x dim_end];]);'</span>])
4790432         eval([<span class="string">'SubField.'</span> VarNameV <span class="string">'=permute(SubField.'</span> VarNameV <span class="string">',[dim_y dim_x dim_end];]);'</span>])
4800433         <span class="keyword">if</span> ~isempty(c_index)
4810434             eval([<span class="string">'SubField.'</span> VarNameC <span class="string">'=permute(SubField.'</span> VarNameC <span class="string">',[dim_y dim_x dim_end];]);'</span>])
4820435             SubField.VarDimName{c_index}=DimCell;
4830436         <span class="keyword">end</span>
4840437     <span class="keyword">end</span>
4850438     SubField.VarDimName{u_index}=DimCell;
4860439     SubField.VarDimName{v_index}=DimCell;
4870440 <span class="keyword">end</span>
4880441
4890442 <span class="comment">%add default coord_x and/or coord_y if empty</span>
4900443 <span class="keyword">if</span> empty_coord_x || empty_coord_y
4910444     VarName=Field.ListVarName{field_var_index};
4920445     eval([<span class="string">'npxy=size(SubField.'</span> VarName <span class="string">');'</span>])
4930446     Coord_1=[1 npxy(1)];
4940447     Coord_2=[1 npxy(2)];
4950448     testold=0;
4960449 <span class="comment">%old convention; use of coord_1 and Coord_2</span>
4970450     <span class="keyword">if</span> isfield(Field,<span class="string">'VarAttribute'</span>) &amp;&amp; numel(Field.VarAttribute)&gt;=field_var_index
4980451         <span class="keyword">if</span> isfield(Field.VarAttribute{field_var_index},<span class="string">'Coord_2'</span>)&amp;&amp; isfield(Field.VarAttribute{field_var_index},<span class="string">'Coord_1'</span>)
4990452             Coord_2=Field.VarAttribute{field_var_index}.Coord_2;
5000453             Coord_1=Field.VarAttribute{field_var_index}.Coord_1;
5010454             testold=1;
5020455         <span class="keyword">end</span>
5030456     <span class="keyword">end</span>
5040457     <span class="keyword">if</span> empty_coord_x
5050458         SubField.ListVarName=[{coord_x_name} SubField.ListVarName];
5060459         SubField.VarDimName=[{coord_x_name} SubField.VarDimName];       
5070460         <span class="keyword">if</span> test_scalar || test_vector <span class="comment">%2D case</span>
5080461             eval([<span class="string">'SubField.'</span> coord_x_name <span class="string">'=linspace(Coord_2(1),Coord_2(end),npxy(2));'</span>])
5090462         <span class="keyword">else</span> <span class="comment">% 1D plot</span>
5100463             eval([<span class="string">'SubField.'</span> coord_x_name <span class="string">'=linspace(Coord_1(1),Coord_1(end),npxy(1));'</span>])
5110464         <span class="keyword">end</span>
5120465         <span class="keyword">if</span> ~testold
5130466             coord_x_attr.units=<span class="string">'index'</span>;
5140467         <span class="keyword">else</span>
5150468             coord_x_attr.units=<span class="string">'cm'</span>;
5160469         <span class="keyword">end</span>
5170470         SubField.VarAttribute=[{coord_x_attr} SubField.VarAttribute]; 
5180471     <span class="keyword">end</span>
5190472     <span class="keyword">if</span> empty_coord_y
5200473         SubField.ListVarName=[{coord_y_name} SubField.ListVarName];
5210474         SubField.VarDimName=[{coord_y_name} SubField.VarDimName];
5220475         eval([<span class="string">'SubField.'</span> coord_y_name <span class="string">'=linspace(Coord_1(1),Coord_1(end),npxy(1));'</span>])
5230476         <span class="keyword">if</span> ~testold
5240477             coord_y_attr.units=<span class="string">'index'</span>;
5250478         <span class="keyword">else</span>
5260479             coord_y_attr.units=<span class="string">'cm'</span>;
5270480         <span class="keyword">end</span>
5280481         SubField.VarAttribute=[{coord_y_attr} SubField.VarAttribute];       
5290482     <span class="keyword">end</span>
5300483 <span class="keyword">end</span>
5310484
5320485 <span class="comment">%-------------------------------------------------</span>
5330486 <span class="comment">% give index numbers of the strings str in the list ListvarName</span>
5340487 <a name="_sub1" href="#_subfunctions" class="code">function VarIndex_y=name2index(cell_str,ListVarName)</a>
5350488 VarIndex_y=[];
5360489 <span class="keyword">if</span> ischar(cell_str)
5370490     <span class="keyword">for</span> ivar=1:length(ListVarName)
5380491         varlist=ListVarName{ivar};
5390492         <span class="keyword">if</span> isequal(varlist,cell_str)
5400493             VarIndex_y= ivar;
5410494             <span class="keyword">break</span>
5420495         <span class="keyword">end</span>
5430496     <span class="keyword">end</span>
5440497 <span class="keyword">elseif</span> iscell(cell_str)
5450498     <span class="keyword">for</span> isel=1:length(cell_str)
5460499         varsel=cell_str{isel};
5470500         <span class="keyword">for</span> ivar=1:length(ListVarName)
5480501             varlist=ListVarName{ivar};
5490502             <span class="keyword">if</span> isequal(varlist,varsel)
5500503                 VarIndex_y=[VarIndex_y ivar];
5510504             <span class="keyword">end</span>
5520505         <span class="keyword">end</span>
5530506     <span class="keyword">end</span>
5540507 <span class="keyword">end</span></pre></div>
555<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>
556</body>
557</html>
Note: See TracBrowser for help on using the repository browser.