source: trunk/src/uvmat_doc/FUNCTIONS_DOC/plot_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: 92.4 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 plot_field</title>
6  <meta name="keywords" content="plot_field">
7  <meta name="description" content="'plot_field': plot any field with the structure defined in the uvmat package">
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; plot_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>plot_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>'plot_field': plot any field with the structure defined in the uvmat package</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 [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar) </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">'plot_field': plot any field with the structure defined in the uvmat package
31------------------------------------------------------------------------
32
33  This function is used by uvmat to plot fields. It automatically chooses the representation
34 appropriate to the input field structure:
35     2D vector fields are represented by arrows, 2D scalar fiedlds by grey scale images or contour plots, 1D fields are represented by usual plot with (abscissa, ordinate).
36  The input field structure is first tested by check_field_structure.m,
37  then split into blocks of related variables  by find_field_indices.m.
38  The dimensionality of each block is obtained  by this fuction
39  considering the presence of variables with the attribute .Role='coord_x'
40  and/or coord_y and/or coord_z (case of unstructured coordinates), or
41  dimension variables (case of matrices).
42
43 function [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar)
44
45 OUPUT:
46 PlotType: type of plot: 'text','line'(curve plot),'plane':2D view,'volume'
47 PlotParamOut: structure, representing the updated  plotting parameters, in case of automatic scaling
48 haxes: handle of the plotting axis, when a new figure is created.
49
50INPUT
51    Data:   structure describing the field to plot
52         (optional) .ListGlobalAttribute: cell listing the names of the global attributes
53                    .Att_1,Att_2... : values of the global attributes
54         (requested)  .ListVarName: list of variable names to select (cell array of  char strings {'VarName1', 'VarName2',...} )
55         (requested)  .VarDimName: list of dimension names for each element of .ListVarName (cell array of string cells)
56                      .VarAttribute: cell of attributes for each element of .ListVarName (cell array of structures of the form VarAtt.key=value)
57         (requested) .Var1, .Var2....: variables (Matlab arrays) with names listed in .ListVarName
58 
59            Variable attribute .Role :
60    The only variable attribute used for plotting purpose is .Role which can take
61    the values
62       Role = 'scalar':  (default) represents a scalar field
63            = 'coord_x', 'coord_y',  'coord_z': represents a separate set of
64                        unstructured coordinate x, y  or z
65            = 'vector': represents a vector field whose number of components
66                is given by the last dimension (called 'nb_dim')
67            = 'vector_x', 'vector_y', 'vector_z'  :represents the x, y or z  component of a vector 
68            = 'warnflag' : provides a warning flag about the quality of data in a 'Field', default=0, no warning
69            = 'errorflag': provides an error flag marking false data,
70                   default=0, no error. Different non zero values can represent different criteria of elimination.</pre></div>
71
72<!-- crossreference -->
73<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
74This function calls:
75<ul style="list-style-image:url(../matlabicon.gif)">
76<li><a href="check_field_structure.html" class="code" title="function [DataOut,errormsg]=check_field_structure(Data)">check_field_structure</a> 'check_field_structure': check the representation of fields by a Matlab structure</li><li><a href="find_field_indices.html" class="code" title="function [CellVarIndex,NbDim,VarType,errormsg]=find_field_indices(Data)">find_field_indices</a> 'find_file_indices': group the variables of a nc-formated Matlab structure into 'fields' with common dimensions</li><li><a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>   'msgbox_uvmat': associated with GUI msgbox_uvmat.fig to display message boxes, for error, warning or input calls</li><li><a href="plot_text.html" class="code" title="function hdisplay=plot_text(FieldData,hdisplay_in)">plot_text</a> 'plot_text': function for displaying the content of a Matlab structure in a figure</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><li><a href="read_plot_param.html" class="code" title="function PlotParam=read_plot_param(handles)">read_plot_param</a>       'read_plot_param':  read plotting parameters from the interface uvmat</li><li><a href="set_col_vec.html" class="code" title="function [colorlist,col_vec,colcode_out]=set_col_vec(colcode,vec_C)">set_col_vec</a>       'set_col_vec': sets the color code for vectors depending on a scalar vec_C and parameters given by the struct colcode</li><li><a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>      'set_title': defines the 'TITLE' of a projection object</li><li><a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>        'warndlg_uvmat': display warning message (error, warning, confirmation) in a given figure</li></ul>
77This function is called by:
78<ul style="list-style-image:url(../matlabicon.gif)">
79<li><a href="geometry_calib.html" class="code" title="function varargout = geometry_calib(varargin)">geometry_calib</a> 'geometry_calib': performs geometric calibration from a set of reference points</li><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="mouse_down.html" class="code" title="function xy=mouse_down(hObject,eventdata)">mouse_down</a>      'mouse_down': function activated when the mouse button is pressed on a figure (callback for 'WindowButtonDownFcn'</li><li><a href="probe_calib.html" class="code" title="function varargout = probe_calib(varargin)">probe_calib</a>    'probe_calib': performs geometric calibration from a set of reference points</li><li><a href="series.html" class="code" title="function varargout = series(varargin)">series</a>        'series': master function associated to the GUI series.m for analysis field series</li><li><a href="update_obj.html" class="code" title="function Object_out=update_obj(UvData,IndexObj,ObjectData,PlotHandles)">update_obj</a> 'update_obj': update the object graph representation and its projection field, record it in the uvmat interface</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>
80<!-- crossreference -->
81
82<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
83<ul style="list-style-image:url(../matlabicon.gif)">
84<li><a href="#_sub1" class="code">function [AxeData,haxes]=plot_hist(Data,haxes,PlotParam)</a></li><li><a href="#_sub2" class="code">function [AxeData,haxes]=plot_profile(data,CellVarIndex,VarType,haxes,PlotParam)</a></li><li><a href="#_sub3" class="code">function [AxeData,haxes,PlotParamOut,PlotType]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,KeepLim,PosColorbar)</a></li><li><a href="#_sub4" class="code">function quiresetn(haxes,x,y,u,v,scale,colorlist,col_vec)</a></li><li><a href="#_sub5" class="code">function YTick=colbartick(MinA,MaxA)</a></li></ul>
85<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
86<div class="fragment"><pre>0001 <span class="comment">%'plot_field': plot any field with the structure defined in the uvmat package</span>
870002 <span class="comment">%------------------------------------------------------------------------</span>
880003 <span class="comment">%</span>
890004 <span class="comment">%  This function is used by uvmat to plot fields. It automatically chooses the representation</span>
900005 <span class="comment">% appropriate to the input field structure:</span>
910006 <span class="comment">%     2D vector fields are represented by arrows, 2D scalar fiedlds by grey scale images or contour plots, 1D fields are represented by usual plot with (abscissa, ordinate).</span>
920007 <span class="comment">%  The input field structure is first tested by check_field_structure.m,</span>
930008 <span class="comment">%  then split into blocks of related variables  by find_field_indices.m.</span>
940009 <span class="comment">%  The dimensionality of each block is obtained  by this fuction</span>
950010 <span class="comment">%  considering the presence of variables with the attribute .Role='coord_x'</span>
960011 <span class="comment">%  and/or coord_y and/or coord_z (case of unstructured coordinates), or</span>
970012 <span class="comment">%  dimension variables (case of matrices).</span>
980013 <span class="comment">%</span>
990014 <span class="comment">% function [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar)</span>
1000015 <span class="comment">%</span>
1010016 <span class="comment">% OUPUT:</span>
1020017 <span class="comment">% PlotType: type of plot: 'text','line'(curve plot),'plane':2D view,'volume'</span>
1030018 <span class="comment">% PlotParamOut: structure, representing the updated  plotting parameters, in case of automatic scaling</span>
1040019 <span class="comment">% haxes: handle of the plotting axis, when a new figure is created.</span>
1050020 <span class="comment">%</span>
1060021 <span class="comment">%INPUT</span>
1070022 <span class="comment">%    Data:   structure describing the field to plot</span>
1080023 <span class="comment">%         (optional) .ListGlobalAttribute: cell listing the names of the global attributes</span>
1090024 <span class="comment">%                    .Att_1,Att_2... : values of the global attributes</span>
1100025 <span class="comment">%         (requested)  .ListVarName: list of variable names to select (cell array of  char strings {'VarName1', 'VarName2',...} )</span>
1110026 <span class="comment">%         (requested)  .VarDimName: list of dimension names for each element of .ListVarName (cell array of string cells)</span>
1120027 <span class="comment">%                      .VarAttribute: cell of attributes for each element of .ListVarName (cell array of structures of the form VarAtt.key=value)</span>
1130028 <span class="comment">%         (requested) .Var1, .Var2....: variables (Matlab arrays) with names listed in .ListVarName</span>
1140029 <span class="comment">%</span>
1150030 <span class="comment">%            Variable attribute .Role :</span>
1160031 <span class="comment">%    The only variable attribute used for plotting purpose is .Role which can take</span>
1170032 <span class="comment">%    the values</span>
1180033         <span class="comment">%       Role = 'scalar':  (default) represents a scalar field</span>
1190034         <span class="comment">%            = 'coord_x', 'coord_y',  'coord_z': represents a separate set of</span>
1200035         <span class="comment">%                        unstructured coordinate x, y  or z</span>
1210036         <span class="comment">%            = 'vector': represents a vector field whose number of components</span>
1220037         <span class="comment">%                is given by the last dimension (called 'nb_dim')</span>
1230038         <span class="comment">%            = 'vector_x', 'vector_y', 'vector_z'  :represents the x, y or z  component of a vector</span>
1240039         <span class="comment">%            = 'warnflag' : provides a warning flag about the quality of data in a 'Field', default=0, no warning</span>
1250040         <span class="comment">%            = 'errorflag': provides an error flag marking false data,</span>
1260041         <span class="comment">%                   default=0, no error. Different non zero values can represent different criteria of elimination.</span>
1270042
1280043
1290044 <span class="comment">%         additional elements characterizing the projection object (should not be necessary)--</span>
1300045 <span class="comment">%            Data.Style : style of projection object</span>
1310046 <span class="comment">%            Data.XObject,.YObject: set of coordinates defining the object position;</span>
1320047 <span class="comment">%            Data.ProjMode=type of projection ;</span>
1330048 <span class="comment">%            Data.ProjAngle=angle of projection;</span>
1340049 <span class="comment">%            Data.DX,.DY,.DZ=increments;</span>
1350050 <span class="comment">%            Data.MaxY,MinY: min and max Y</span>
1360051
1370052 <span class="comment">%   haxes: handle of the plotting axes to update with the new plot. If this input is absent or not a valid axes handle, a new figure is created.</span>
1380053 <span class="comment">%</span>
1390054 <span class="comment">%   PlotParam: parameters for plotting, as read on the uvmat interface (by function 'read_plot_param.m')</span>
1400055 <span class="comment">%            --scalars--</span>
1410056 <span class="comment">%    .Scalar.MaxA: upper bound (saturation color) for the scalar representation, max(field) by default</span>
1420057 <span class="comment">%    .Scalar.MinA: lower bound (saturation) for the scalar representation, min(field) by default</span>
1430058 <span class="comment">%    .Scalar.AutoScal: =1 (default) lower and upper bounds of the scalar representation set to the min and max of the field</span>
1440059 <span class="comment">%               =0 lower and upper bound imposed by .AMax and .MinA</span>
1450060 <span class="comment">%    .Scalar.BW= 1 black and white representation imposed, =0 by default.</span>
1460061 <span class="comment">%    .Scalar.Contours= 1: represent scalars by contour plots (Matlab function 'contour'); =0 by default</span>
1470062 <span class="comment">%    .IncrA : contour interval</span>
1480063 <span class="comment">%            -- vectors--</span>
1490064 <span class="comment">%    .Vectors.VecScale: scale for the vector representation</span>
1500065 <span class="comment">%    .Vectors.AutoVec: =0 (default) automatic length for vector representation, =1: length set by .VecScale</span>
1510066 <span class="comment">%    .Vectors.HideFalse= 0 (default) false vectors represented in magenta, =1: false vectors not represented;</span>
1520067 <span class="comment">%    .Vectors.HideWarning= 0 (default) vectors marked by warnflag~=0 marked in black, 1: no warning representation;</span>
1530068 <span class="comment">%    .Vectors.decimate4 = 0 (default) all vectors reprtesented, =1: half of  the vectors represented along each coordinate</span>
1540069 <span class="comment">%         -- vector color--</span>
1550070 <span class="comment">%    .Vectors.ColorCode= 'black','white': imposed color  (default ='blue')</span>
1560071 <span class="comment">%                        'rgb', : three colors red, blue, green depending</span>
1570072 <span class="comment">%                        on thresholds .colcode1 and .colcode2 on the input  scalar value (C)</span>
1580073 <span class="comment">%                        'brg': like rgb but reversed color order (blue, green, red)</span>
1590074 <span class="comment">%                        '64 colors': continuous color from blue to red (multijet)</span>
1600075 <span class="comment">%    .Vectors.colcode1 : first threshold for rgb, first value for'continuous'</span>
1610076 <span class="comment">%    .Vectors.colcode2 : second threshold for rgb, last value (saturation) for 'continuous'</span>
1620077 <span class="comment">%    .Vectors.FixedCbounds;  =0 (default): the bounds on C representation are min and max, =1: they are fixed by .Minc and .MaxC</span>
1630078 <span class="comment">%    .Vectors.MinC = imposed minimum of the scalar field used for vector color;</span>
1640079 <span class="comment">%    .Vectors.MaxC = imposed maximum of the scalar field used for vector color;</span>
1650080 <span class="comment">%</span>
1660081 <span class="comment">% KeepLim:=0 (default) adjust axes limit to the X,Y data, =1: preserves the previous axes limits</span>
1670082 <span class="comment">% PosColorbar: if not empty, display a colorbar for B&amp;W images</span>
1680083 <span class="comment">%               imposed position of the colorbar (ex [0.821 0.471 0.019 0.445])</span>
1690084 <span class="comment">%</span>
1700085 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
1710086 <span class="comment">%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.</span>
1720087 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
1730088 <span class="comment">%     This file is part of the toolbox UVMAT.</span>
1740089 <span class="comment">%</span>
1750090 <span class="comment">%     UVMAT is free software; you can redistribute it and/or modify</span>
1760091 <span class="comment">%     it under the terms of the GNU General Public License as published by</span>
1770092 <span class="comment">%     the Free Software Foundation; either version 2 of the License, or</span>
1780093 <span class="comment">%     (at your option) any later version.</span>
1790094 <span class="comment">%</span>
1800095 <span class="comment">%     UVMAT is distributed in the hope that it will be useful,</span>
1810096 <span class="comment">%     but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
1820097 <span class="comment">%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
1830098 <span class="comment">%     GNU General Public License (file UVMAT/COPYING.txt) for more details.</span>
1840099 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
1850100
1860101 <a name="_sub0" href="#_subfunctions" class="code">function [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar)</a>
1870102 <span class="comment">%default output</span>
1880103 <span class="keyword">if</span> ~exist(<span class="string">'PlotParam'</span>,<span class="string">'var'</span>),PlotParam=[];<span class="keyword">end</span>;
1890104 <span class="keyword">if</span> ~exist(<span class="string">'KeepLim'</span>,<span class="string">'var'</span>),KeepLim=0;<span class="keyword">end</span>;
1900105 <span class="keyword">if</span> ~exist(<span class="string">'PosColorbar'</span>,<span class="string">'var'</span>),PosColorbar=[];<span class="keyword">end</span>;
1910106 PlotType=<span class="string">'text'</span>; <span class="comment">%default</span>
1920107 PlotParamOut=PlotParam;<span class="comment">%default</span>
1930108
1940109 <span class="comment">% check input structure</span>
1950110 [Data,errormsg]=<a href="check_field_structure.html" class="code" title="function [DataOut,errormsg]=check_field_structure(Data)">check_field_structure</a>(Data);
1960111
1970112 <span class="keyword">if</span> ~isempty(errormsg)
1980113     <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,[<span class="string">'input of plot_field/check_field_structure: '</span> errormsg])
1990114     display([<span class="string">'input of plot_field/check_field_structure:: '</span> errormsg])
2000115     <span class="keyword">return</span>
2010116 <span class="keyword">end</span>
2020117
2030118 testnewfig=1;<span class="comment">%test to create a new figure (default)</span>
2040119 testzoomaxes=0;<span class="comment">%test for the existence of a zoom secondary figure attached to the plotting axes</span>
2050120 <span class="keyword">if</span> exist(<span class="string">'haxes'</span>,<span class="string">'var'</span>)
2060121     <span class="keyword">if</span> ishandle(haxes)
2070122         <span class="keyword">if</span> isequal(get(haxes,<span class="string">'Type'</span>),<span class="string">'axes'</span>)
2080123 <span class="comment">%             hfig=get(haxes,'Parent');</span>
2090124             axes(haxes)
2100125             testnewfig=0;
2110126             AxeData=get(haxes,<span class="string">'UserData'</span>);
2120127             <span class="keyword">if</span> isfield(AxeData,<span class="string">'ZoomAxes'</span>)&amp;&amp; ishandle(AxeData.ZoomAxes)
2130128                 <span class="keyword">if</span> isequal(get(AxeData.ZoomAxes,<span class="string">'Type'</span>),<span class="string">'axes'</span>)
2140129                     testzoomaxes=1;
2150130                     zoomaxes=AxeData.ZoomAxes;
2160131                 <span class="keyword">end</span>
2170132             <span class="keyword">end</span>
2180133         <span class="keyword">end</span>
2190134     <span class="keyword">end</span>
2200135 <span class="keyword">end</span>
2210136 <span class="keyword">if</span> testnewfig<span class="comment">% create a new figure and axes if the plotting axes does not exist</span>
2220137     hfig=figure;
2230138     <span class="keyword">if</span> isfield(Data,<span class="string">'IndexObj'</span>)&amp;isfield(Data,<span class="string">'Style'</span>)&amp;isfield(Data,<span class="string">'ProjMode'</span>)
2240139         figname=[num2str(Data.IndexObj) <span class="string">'-'</span> <a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>(Data.Style,Data.ProjMode)];
2250140         set(hfig,<span class="string">'Name'</span>,figname)
2260141     <span class="keyword">end</span>
2270142     testhandle=0;
2280143     <span class="keyword">if</span> isfield(PlotParam,<span class="string">'text_display_1'</span>)&amp; ishandle(PlotParam.text_display_1)
2290144         set(hfig,<span class="string">'UserData'</span>,PlotParam)
2300145         testhandle=1;
2310146     <span class="keyword">end</span>
2320147     set(hfig,<span class="string">'Units'</span>,<span class="string">'normalized'</span>)
2330148     set(hfig,<span class="string">'WindowButtonDownFcn'</span>,<span class="string">'mouse_down'</span>)
2340149     <span class="comment">%set(hfig,'WindowButtonMotionFcn',{'mouse_motion',PlotParam})%set mouse action function</span>
2350150     set(hfig,<span class="string">'WindowButtonMotionFcn'</span>,<span class="string">'mouse_motion'</span>)<span class="comment">%set mouse action function</span>
2360151     set(hfig,<span class="string">'WindowButtonUpFcn'</span>,<span class="string">'mouse_up'</span>)<span class="comment">%set mouse action function</span>
2370152     haxes=axes;
2380153     set(haxes,<span class="string">'position'</span>,[0.13,0.2,0.775,0.73])
2390154 <span class="keyword">end</span>
2400155 <span class="keyword">if</span> isfield(PlotParam,<span class="string">'text_display_1'</span>)&amp; ishandle(PlotParam.text_display_1)
2410156     PlotParam=<a href="read_plot_param.html" class="code" title="function PlotParam=read_plot_param(handles)">read_plot_param</a>(PlotParam);   
2420157 <span class="keyword">end</span>
2430158 <span class="keyword">if</span> testnewfig
2440159   PlotParam.NextPlot=<span class="string">'add'</span>; <span class="comment">%parameter for plot_profile and plot_hist</span>
2450160 <span class="keyword">end</span>
2460161 <span class="keyword">if</span> isfield(PlotParam,<span class="string">'Auto_xy'</span>) &amp;&amp; isequal(PlotParam.Auto_xy,1)
2470162     set(haxes,<span class="string">'DataAspectRatioMode'</span>,<span class="string">'auto'</span>)<span class="comment">%automatic aspect ratio</span>
2480163 <span class="keyword">end</span>
2490164
2500165 <span class="comment">% check the cells of fields :</span>
2510166 testnbdim=1;
2520167 [CellVarIndex,NbDim,VarType,errormsg]=<a href="find_field_indices.html" class="code" title="function [CellVarIndex,NbDim,VarType,errormsg]=find_field_indices(Data)">find_field_indices</a>(Data);
2530168
2540169 <span class="keyword">if</span> ~isempty(errormsg)
2550170     <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,[<span class="string">'input of plot_field/find_field_indices: '</span> errormsg])
2560171     display([<span class="string">'input of plot_field: '</span> errormsg])
2570172     <span class="keyword">return</span>
2580173 <span class="keyword">end</span>
2590174 <span class="keyword">if</span> ~isfield(Data,<span class="string">'NbDim'</span>) <span class="comment">%&amp; ~isfield(Data,'Style')%determine the space dimensionb if not defined: choose the kind of plot</span>
2600175     [Data.NbDim,imax]=max(NbDim);
2610176 <span class="keyword">end</span>
2620177 <span class="keyword">if</span> isequal(Data.NbDim,0) <span class="comment">% TODO: chech whether this function is still used, replace by plot_profile ?</span>
2630178     <span class="keyword">if</span> isfield(Data,<span class="string">'Style'</span>) &amp; isequal(Data.Style,<span class="string">'points'</span>)
2640179         AxeData=<a href="plot_text.html" class="code" title="function hdisplay=plot_text(FieldData,hdisplay_in)">plot_text</a>(Data,haxes);
2650180         PlotType=<span class="string">'text'</span>;
2660181     <span class="keyword">else</span>
2670182         [AxeData,haxes]=<a href="#_sub1" class="code" title="subfunction [AxeData,haxes]=plot_hist(Data,haxes,PlotParam)">plot_hist</a>(Data,haxes,PlotParam);
2680183     <span class="keyword">end</span>
2690184 <span class="keyword">elseif</span> isequal(Data.NbDim,1)
2700185     [AxeData,haxes]=<a href="#_sub2" class="code" title="subfunction [AxeData,haxes]=plot_profile(data,CellVarIndex,VarType,haxes,PlotParam)">plot_profile</a>(Data,CellVarIndex,VarType,haxes,PlotParam);<span class="comment">%</span>
2710186     <span class="keyword">if</span> testzoomaxes
2720187         [AxeData,zoomaxes,PlotParamOut]=<a href="#_sub2" class="code" title="subfunction [AxeData,haxes]=plot_profile(data,CellVarIndex,VarType,haxes,PlotParam)">plot_profile</a>(Data,CellVarIndex,VarType,zoomaxes,PlotParam);
2730188         AxeData.ZoomAxes=zoomaxes;
2740189     <span class="keyword">end</span>
2750190     PlotType=<span class="string">'line'</span>;
2760191 <span class="keyword">elseif</span> isequal(Data.NbDim,2)
2770192     ind_select=find(NbDim&gt;=2);
2780193     <span class="keyword">if</span> numel(ind_select)&gt;2
2790194         <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,[<span class="string">'more than two fields to map'</span>])
2800195         display([<span class="string">'more than two fields to map'</span>])
2810196         <span class="keyword">return</span>
2820197     <span class="keyword">end</span>
2830198     [AxeData,haxes,PlotParamOut,PlotType]=<a href="#_sub3" class="code" title="subfunction [AxeData,haxes,PlotParamOut,PlotType]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,KeepLim,PosColorbar)">plot_plane</a>(Data,CellVarIndex(ind_select),VarType(ind_select),haxes,PlotParam,KeepLim,PosColorbar);
2840199     <span class="keyword">if</span> testzoomaxes
2850200         [AxeData,zoomaxes,PlotParamOut]=<a href="#_sub3" class="code" title="subfunction [AxeData,haxes,PlotParamOut,PlotType]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,KeepLim,PosColorbar)">plot_plane</a>(Data,CellVarIndex(ind_select),VarType(ind_select),zoomaxes,PlotParam,1,PosColorbar);
2860201         AxeData.ZoomAxes=zoomaxes;
2870202     <span class="keyword">end</span>
2880203 <span class="keyword">elseif</span> isequal(Data.NbDim,3)
2890204     <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'volume plot not implemented yet'</span>)
2900205     <span class="keyword">return</span>
2910206     <span class="comment">%plot_volume(haxes,Data,PlotParam)% A FAIRE</span>
2920207     <span class="comment">%PlotType='volume';</span>
2930208 <span class="keyword">else</span>
2940209     testnbdim=0;
2950210 <span class="keyword">end</span>
2960211
2970212 <span class="comment">%display (or delete) error message</span>
2980213 htext=findobj(haxes,<span class="string">'Tag'</span>,<span class="string">'hTxt'</span>);
2990214 <span class="keyword">if</span> isfield(Data,<span class="string">'Txt'</span>)
3000215     <span class="keyword">if</span> isempty(htext)
3010216         Xlim=get(haxes,<span class="string">'XLim'</span>);
3020217         Ylim=get(haxes,<span class="string">'YLim'</span>);
3030218         htext=text(Xlim(1),(Ylim(1)+Ylim(2))/2,Data.Txt,<span class="string">'Tag'</span>,<span class="string">'hTxt'</span>,<span class="string">'Color'</span>,<span class="string">'r'</span>);
3040219         set(htext,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)
3050220     <span class="keyword">else</span>
3060221         set(htext,<span class="string">'String'</span>,Data.Txt)
3070222     <span class="keyword">end</span>
3080223 <span class="keyword">elseif</span> ~isempty(htext)
3090224     delete(htext)
3100225 <span class="keyword">end</span>
3110226
3120227 <span class="comment">% set graph aspect ratio</span>
3130228
3140229
3150230 set(haxes,<span class="string">'UserData'</span>,AxeData)
3160231 <span class="comment">%set(haxes,'Tag','uvmat');</span>
3170232
3180233 
3190234 <span class="comment">%-------------------------------------------</span>
3200235 <a name="_sub1" href="#_subfunctions" class="code">function [AxeData,haxes]=plot_hist(Data,haxes,PlotParam)</a><span class="comment">% TODO: chech whether this function is still used, replace by plot_profile ?</span>
3210236 <span class="comment">%------------------------------------------</span>
3220237 AxeData=get(haxes,<span class="string">'UserData'</span>); <span class="comment">%defau</span>
3230238 hfig=get(haxes,<span class="string">'parent'</span>);
3240239 <span class="keyword">if</span> ~isfield(Data,<span class="string">'ListVarName'</span>)
3250240     <span class="keyword">return</span>
3260241 <span class="keyword">end</span>
3270242 ColorOrder=[1 0 0;0 0.5 0;0 0 1;0 0.75 0.75;0.75 0 0.75;0.75 0.75 0;0.25 0.25 0.25];
3280243 set(haxes,<span class="string">'ColorOrder'</span>,ColorOrder)
3290244 <span class="keyword">if</span> isfield(PlotParam,<span class="string">'NextPlot'</span>)
3300245     set(haxes,<span class="string">'NextPlot'</span>,PlotParam.NextPlot)
3310246 <span class="keyword">end</span>
3320247 charplot=<span class="string">'''-'''</span>;
3330248 iplot=0;
3340249 legend_str={};
3350250 label_str=<span class="string">''</span>;
3360251 textmean={};
3370252 plotstr=<span class="string">'plot('</span>;
3380253 <span class="keyword">for</span> ilist=1:length(Data.ListVarName)
3390254     VarName=Data.ListVarName{ilist};
3400255     eval([<span class="string">'['</span> VarName <span class="string">'hist,'</span> VarName <span class="string">'val]=hist(double(Data.'</span> VarName <span class="string">'),100);'</span>]);<span class="comment">%coordinate variable set as c</span>
3410256     plotstr=[plotstr VarName <span class="string">'val,'</span> VarName <span class="string">'hist,'</span> charplot <span class="string">','</span>];
3420257     eval([<span class="string">'nbcomponent2=size(Data.'</span> VarName <span class="string">',2);'</span>]);
3430258     eval([<span class="string">'nbcomponent1=size(Data.'</span> VarName <span class="string">',1);'</span>]);
3440259     eval([<span class="string">'varmean=mean(double(Data.'</span> VarName <span class="string">'));'</span>]);<span class="comment">%mean value</span>
3450260     textmean=[textmean; {[VarName <span class="string">'mean= '</span> num2str(varmean,4)]}];
3460261     <span class="keyword">if</span> nbcomponent1==1| nbcomponent2==1
3470262         legend_str=[legend_str {VarName}]; <span class="comment">%variable with one component</span>
3480263     <span class="keyword">else</span>
3490264         <span class="keyword">for</span> ic=1:min(nbcomponent1,nbcomponent2)
3500265             legend_str=[legend_str [VarName <span class="string">'_'</span> num2str(ic)]]; <span class="comment">%variable with severals  components</span>
3510266                                                                <span class="comment">% labeled by their index (e.g. color component)</span>
3520267         <span class="keyword">end</span>
3530268     <span class="keyword">end</span>
3540269     label_str=[label_str <span class="string">' '</span> VarName];
3550270 <span class="keyword">end</span>
3560271 <span class="keyword">if</span> ~isequal(plotstr,<span class="string">'plot('</span>)
3570272     plotstr(end)=<span class="string">')'</span>;
3580273     eval(plotstr)
3590274     hlegend=findobj(hfig,<span class="string">'Tag'</span>,<span class="string">'legend'</span>);<span class="comment">%find existing legend on the plot</span>
3600275     <span class="keyword">if</span> ~isempty(hlegend)
3610276         legend_old=get(hlegend,<span class="string">'String'</span>);
3620277         <span class="keyword">if</span> isequal(size(legend_old,1),size(legend_str,1))
3630278              legend_str=[legend_old legend_str];
3640279         <span class="keyword">end</span>
3650280     <span class="keyword">end</span>
3660281     legend(legend_str)
3670282     xlabel(label_str)
3680283     ylabel(<span class="string">'nb values'</span>)
3690284      grid on
3700285     title_str=<span class="string">''</span>;
3710286     <span class="keyword">if</span> isfield(Data,<span class="string">'filename'</span>)
3720287        [Path, title_str, ext]=fileparts(Data.filename);
3730288        title_str=[title_str ext];
3740289     <span class="keyword">end</span>
3750290     <span class="keyword">if</span> isfield(Data,<span class="string">'Action'</span>)
3760291         <span class="keyword">if</span> ~isequal(title_str,<span class="string">''</span>)
3770292             title_str=[title_str <span class="string">', '</span>];
3780293         <span class="keyword">end</span>
3790294         title_str=[title_str Data.Action];
3800295     <span class="keyword">end</span>
3810296     htitle=title(title_str);
3820297     set(htitle,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)<span class="comment">% desable tex interpreter</span>
3830298     hlist=findobj(gcf,<span class="string">'Style'</span>,<span class="string">'listbox'</span>);
3840299     <span class="keyword">if</span> isempty(hlist)
3850300             uicontrol(<span class="string">'Style'</span>,<span class="string">'popupmenu'</span>,<span class="string">'Position'</span>,[20 20 200 20],<span class="string">'String'</span>,textmean);
3860301     <span class="keyword">else</span>
3870302             set(hlist(1),<span class="string">'String'</span>,textmean)
3880303     <span class="keyword">end</span>
3890304 <span class="keyword">end</span>
3900305 AxeData=Data;
3910306
3920307
3930308 <span class="comment">%----------------------------------------------------------</span>
3940309 <a name="_sub2" href="#_subfunctions" class="code">function [AxeData,haxes]=plot_profile(data,CellVarIndex,VarType,haxes,PlotParam)</a>
3950310 <span class="comment">%-----------------------------------------------------------</span>
3960311 axes(haxes)
3970312 hfig=get(haxes,<span class="string">'parent'</span>);
3980313 AxeData=data;
3990314 ColorOrder=[1 0 0;0 0.5 0;0 0 1;0 0.75 0.75;0.75 0 0.75;0.75 0.75 0;0.25 0.25 0.25];
4000315 set(haxes,<span class="string">'ColorOrder'</span>,ColorOrder)
4010316 <span class="keyword">if</span> isfield(PlotParam,<span class="string">'NextPlot'</span>)
4020317     set(haxes,<span class="string">'NextPlot'</span>,PlotParam.NextPlot)
4030318 <span class="keyword">end</span>
4040319 legend_str={};
4050320
4060321 <span class="comment">%initiates string of the plot command</span>
4070322 plotstr=<span class="string">'plot('</span>;
4080323 textmean={};
4090324 abscissa_name=<span class="string">''</span>;
4100325 coord_x_index=[];
4110326 <span class="keyword">for</span> icell=1:length(CellVarIndex)
4120327     testfalse=0;
4130328     VarIndex=CellVarIndex{icell};<span class="comment">%  indices of the selected variables in the list data.ListVarName</span>
4140329     DimCell=data.VarDimName{VarIndex(1)};
4150330     <span class="keyword">if</span> ischar(DimCell)
4160331         DimCell={DimCell};
4170332     <span class="keyword">end</span>
4180333     XName=DimCell{1}; <span class="comment">%first dimension considered as abscissa</span>
4190334     coord_x_index_cell=VarType{icell}.coord(1);
4200335     <span class="keyword">if</span> isequal(coord_x_index_cell,0)
4210336         <span class="keyword">continue</span>  <span class="comment">% the cell has no abscissa, skip it</span>
4220337     <span class="keyword">end</span>
4230338     <span class="keyword">if</span> ~isempty(coord_x_index)&amp;&amp;~isequal(coord_x_index_cell,coord_x_index)
4240339         <span class="keyword">continue</span> <span class="comment">%all the selected variables must have the same first dimension</span>
4250340     <span class="keyword">else</span>
4260341         coord_x_index=coord_x_index_cell;
4270342     <span class="keyword">end</span>
4280343     testplot=ones(size(data.ListVarName));<span class="comment">%default test for plotted variables</span>
4290344     testcoordvar=0;
4300345     charplot_0=<span class="string">'''-'''</span>;<span class="comment">%default</span>
4310346     <span class="keyword">if</span> isfield(data,<span class="string">'ObjectProjMode'</span>)&amp; isequal(data.ObjectProjMode,<span class="string">'projection'</span>)
4320347         charplot_0=<span class="string">'''+'''</span>;
4330348     <span class="keyword">end</span>
4340349     xtitle=<span class="string">''</span>
4350350     
4360351     xtitle=data.ListVarName{coord_x_index};
4370352     eval([<span class="string">'coord_x{icell}=data.'</span> data.ListVarName{coord_x_index} <span class="string">';'</span>]);<span class="comment">%coordinate variable set as coord_x</span>
4380353     <span class="keyword">if</span> isfield(data,<span class="string">'VarAttribute'</span>)&amp;&amp; numel(data.VarAttribute)&gt;=coord_x_index &amp;&amp; isfield(data.VarAttribute{coord_x_index},<span class="string">'units'</span>)
4390354          xtitle=[xtitle <span class="string">'('</span> data.VarAttribute{coord_x_index}.units <span class="string">')'</span>];
4400355     <span class="keyword">end</span>
4410356     eval([<span class="string">'coord_x{icell}=data.'</span> data.ListVarName{coord_x_index} <span class="string">';'</span>]);<span class="comment">%coordinate variable set as coord_x</span>
4420357     testcoordvar=1;
4430358     testplot(coord_x_index)=0;
4440359     <span class="keyword">if</span> ~isempty(VarType{icell}.ancillary')
4450360             testplot(VarType{icell}.ancillary)=0;
4460361     <span class="keyword">end</span>
4470362     <span class="keyword">if</span> ~isempty(VarType{icell}.warnflag')
4480363             testplot(VarType{icell}.warnflag)=0;
4490364     <span class="keyword">end</span>
4500365     <span class="keyword">if</span> ~isempty(VarType{icell}.discrete')
4510366          charplot_0=<span class="string">'''+'''</span>;
4520367     <span class="keyword">else</span>
4530368           charplot_0=<span class="string">'''-'''</span>;
4540369     <span class="keyword">end</span>
4550370     <span class="keyword">if</span> testcoordvar==0
4560371         coord_x{icell}=[1:data.DimValue(DimIndices(1))];<span class="comment">%abscissa by default if no coordinate variable</span>
4570372        <span class="comment">% charplot_0='''-''';</span>
4580373     <span class="keyword">end</span>
4590374     <span class="keyword">if</span> isfield(data,<span class="string">'VarAttribute'</span>)
4600375         VarAttribute=data.VarAttribute;
4610376         <span class="keyword">for</span> ivar=1:length(VarIndex)
4620377              <span class="keyword">if</span> length(VarAttribute)&gt;=VarIndex(ivar) &amp; isfield(VarAttribute{VarIndex(ivar)},<span class="string">'long_name'</span>)
4630378                  plotname{VarIndex(ivar)}=VarAttribute{VarIndex(ivar)}.long_name;
4640379              <span class="keyword">else</span>
4650380                  plotname{VarIndex(ivar)}=data.ListVarName{VarIndex(ivar)};<span class="comment">%name for display in plot A METTRE</span>
4660381              <span class="keyword">end</span>
4670382         <span class="keyword">end</span>
4680383     <span class="keyword">end</span>
4690384     <span class="keyword">for</span> ivar=1:length(VarIndex)
4700385         <span class="keyword">if</span> testplot(VarIndex(ivar))
4710386             VarName=data.ListVarName{VarIndex(ivar)};
4720387             eval([<span class="string">'data.'</span> VarName <span class="string">'=squeeze(data.'</span> VarName <span class="string">');'</span>])
4730388             <span class="keyword">if</span> isequal(VarName,<span class="string">'A'</span>)
4740389                 charplot=<span class="string">'''-'''</span>;
4750390             <span class="keyword">else</span>
4760391                 charplot=charplot_0;
4770392             <span class="keyword">end</span>
4780393             plotstr=[plotstr <span class="string">'coord_x{'</span> num2str(icell) <span class="string">'},data.'</span> VarName <span class="string">','</span> charplot <span class="string">','</span>];
4790394             eval([<span class="string">'nbcomponent2=size(data.'</span> VarName <span class="string">',2);'</span>]);
4800395             eval([<span class="string">'nbcomponent1=size(data.'</span> VarName <span class="string">',1);'</span>]);
4810396             eval([<span class="string">'varmean=mean(double(data.'</span> VarName <span class="string">'));'</span>]);<span class="comment">%mean value</span>
4820397             textmean=[textmean; {[VarName <span class="string">'mean= '</span> num2str(varmean,4)]}];
4830398             <span class="keyword">if</span> nbcomponent1==1| nbcomponent2==1
4840399                 legend_str=[legend_str {VarName}]; <span class="comment">%variable with one component</span>
4850400             <span class="keyword">else</span>  <span class="comment">%variable with severals  components</span>
4860401                 <span class="keyword">for</span> ic=1:min(nbcomponent1,nbcomponent2)
4870402                     legend_str=[legend_str [VarName <span class="string">'_'</span> num2str(ic)]]; <span class="comment">%variable with severals  components</span>
4880403                 <span class="keyword">end</span>                                                   <span class="comment">% labeled by their index (e.g. color component)</span>
4890404             <span class="keyword">end</span>
4900405         <span class="keyword">end</span>
4910406     <span class="keyword">end</span>
4920407 <span class="keyword">end</span>
4930408 <span class="keyword">if</span> ~isequal(plotstr,<span class="string">'plot('</span>)
4940409     plotstr(end)=<span class="string">')'</span>;
4950410                 <span class="comment">%execute plot (instruction  plotstr)</span>
4960411     eval(plotstr)
4970412                 <span class="comment">%%%%%</span>
4980413     grid on
4990414     hxlabel=xlabel(xtitle);
5000415     set(hxlabel,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)<span class="comment">% desable tex interpreter</span>
5010416     <span class="keyword">if</span> length(legend_str)&gt;=1
5020417         hylabel=ylabel(legend_str{end});
5030418         set(hylabel,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)<span class="comment">% desable tex interpreter</span>
5040419     <span class="keyword">end</span>
5050420     <span class="keyword">if</span> ~isempty(legend_str)
5060421         hlegend=findobj(hfig,<span class="string">'Tag'</span>,<span class="string">'legend'</span>);
5070422         <span class="keyword">if</span> isempty(hlegend)
5080423             hlegend=legend(legend_str);
5090424             txt=ver;
5100425             Release=txt(1).Release;
5110426             relnumb=str2num(Release(3:4));
5120427             <span class="keyword">if</span> relnumb &gt;= 14
5130428                 set(hlegend,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)<span class="comment">% desable tex interpreter</span>
5140429             <span class="keyword">end</span>
5150430         <span class="keyword">else</span>
5160431             legend_old=get(hlegend,<span class="string">'String'</span>);
5170432             <span class="keyword">if</span> isequal(size(legend_old,1),size(legend_str,1))&amp;~isequal(legend_old,legend_str)
5180433                 set(hlegend,<span class="string">'String'</span>,[legend_old legend_str]);
5190434             <span class="keyword">end</span>
5200435         <span class="keyword">end</span> 
5210436     <span class="keyword">end</span>
5220437     title_str=<span class="string">''</span>;
5230438     <span class="keyword">if</span> isfield(data,<span class="string">'filename'</span>)
5240439        [Path, title_str, ext]=fileparts(data.filename);
5250440        title_str=[title_str ext];
5260441     <span class="keyword">end</span>
5270442     <span class="keyword">if</span> isfield(data,<span class="string">'Action'</span>)
5280443         <span class="keyword">if</span> ~isequal(title_str,<span class="string">''</span>)
5290444             title_str=[title_str <span class="string">', '</span>];
5300445         <span class="keyword">end</span>
5310446         title_str=[title_str data.Action];
5320447     <span class="keyword">end</span>
5330448     htitle=title(title_str);
5340449     txt=ver;
5350450     Release=txt(1).Release;
5360451     relnumb=str2num(Release(3:4));
5370452     <span class="keyword">if</span> relnumb &gt;= 14
5380453         set(htitle,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)<span class="comment">% desable tex interpreter</span>
5390454     <span class="keyword">end</span>
5400455     <span class="comment">% A REPRENDRE Mean</span>
5410456 <span class="comment">%         hlist=findobj(gcf,'Style','listbox','Tag','liststat');</span>
5420457 <span class="comment">%         if isempty(hlist)</span>
5430458 <span class="comment">%             'text'</span>
5440459 <span class="comment">%             textmean</span>
5450460 <span class="comment">%             set(gca,'position',[0.13,0.2,0.775,0.73])</span>
5460461 <span class="comment">%             uicontrol('Style','popupmenu','Position',[20 20 200 20],'String',textmean,'Tag','liststat');</span>
5470462 <span class="comment">%         else</span>
5480463 <span class="comment">%             set(hlist(1),'String',textmean)</span>
5490464 <span class="comment">%         end</span>
5500465 <span class="keyword">end</span>
5510466
5520467
5530468 <span class="comment">%---------------------------------------</span>
5540469 <span class="comment">% plot_plane</span>
5550470 <span class="comment">%----------------------------------------</span>
5560471 <a name="_sub3" href="#_subfunctions" class="code">function [AxeData,haxes,PlotParamOut,PlotType]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,KeepLim,PosColorbar)</a>
5570472
5580473 <span class="comment">%default plotting parameters</span>
5590474 PlotType=<span class="string">'plane'</span>;<span class="comment">%default</span>
5600475 <span class="keyword">if</span> ~exist(<span class="string">'PlotParam'</span>,<span class="string">'var'</span>)
5610476     PlotParam=[];
5620477 <span class="keyword">end</span>
5630478 <span class="keyword">if</span> ~isfield(PlotParam,<span class="string">'Scalar'</span>)
5640479     PlotParam.Scalar=[];
5650480 <span class="keyword">end</span>
5660481 <span class="keyword">if</span> ~isfield(PlotParam,<span class="string">'Vectors'</span>)
5670482     PlotParam.Vectors=[];
5680483 <span class="keyword">end</span>
5690484 PlotParamOut=PlotParam;<span class="comment">%default</span>
5700485
5710486 <span class="comment">%plotting axes</span>
5720487 hfig=get(haxes,<span class="string">'parent'</span>);
5730488 hcol=findobj(hfig,<span class="string">'Tag'</span>,<span class="string">'Colorbar'</span>); <span class="comment">%look for colorbar axes</span>
5740489 hima=findobj(haxes,<span class="string">'Tag'</span>,<span class="string">'ima'</span>);<span class="comment">% search existing image in the current axes</span>
5750490 AxeData=get(haxes,<span class="string">'UserData'</span>); <span class="comment">%default</span>
5760491 <span class="keyword">if</span> ~isstruct(AxeData)<span class="comment">% AxeData must be a structure</span>
5770492     AxeData=[];
5780493 <span class="keyword">end</span>
5790494 AxeData.NbDim=2;
5800495 <span class="keyword">if</span> isfield(Data,<span class="string">'ObjectCoord'</span>)
5810496     AxeData.ObjectCoord=Data.ObjectCoord;
5820497 <span class="keyword">end</span>
5830498
5840499 test_ima=0; <span class="comment">%default: test for image or map plot</span>
5850500 test_vec=0; <span class="comment">%default: test for vector plots</span>
5860501 test_black=0;
5870502 test_false=0;
5880503 test_C=0;
5890504 <span class="keyword">for</span> icell=1:length(CellVarIndex) <span class="comment">% length(CellVarIndex) =1 or 2 (from the calling function)</span>
5900505 <span class="comment">%     VarIndex=CellVarIndex{icell};</span>
5910506     VarType=VarTypeCell{icell};
5920507     ivar_X=VarType.coord_x; <span class="comment">% defines (unique) index for the variable representing unstructured x coordinate (default =[])</span>
5930508     ivar_Y=VarType.coord_y; <span class="comment">% defines (unique)index for the variable representing unstructured y coordinate (default =[])</span>
5940509     ivar_U=VarType.vector_x; <span class="comment">% defines (unique) index for the variable representing x vector component (default =[])</span>
5950510     ivar_V=VarType.vector_y; <span class="comment">% defines (unique) index for the variable representing y vector component (default =[])</span>
5960511     ivar_C=[VarType.scalar VarType.image VarType.color VarType.ancillary]; <span class="comment">%defines index (indices) for the scalar or ancillary fields</span>
5970512     <span class="keyword">if</span> numel(ivar_C)&gt;1
5980513         <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'too many scalar inputs in plot_field.m'</span>)
5990514         <span class="keyword">return</span>
6000515     <span class="keyword">end</span>
6010516     ivar_F=VarType.warnflag; <span class="comment">%defines index (unique) for warning flag variable</span>
6020517     ivar_FF=VarType.errorflag; <span class="comment">%defines index (unique) for error flag variable</span>
6030518     idim_Y=[]; 
6040519     test_grid=0;
6050520     <span class="keyword">if</span> ~isempty(ivar_U) &amp;&amp; ~isempty(ivar_V)<span class="comment">% vector components detected</span>
6060521         <span class="keyword">if</span> test_vec
6070522             <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'attempt to plot two vector fields'</span>)
6080523             <span class="keyword">return</span>
6090524         <span class="keyword">else</span>
6100525             test_vec=1;
6110526             eval([<span class="string">'vec_U=Data.'</span> Data.ListVarName{ivar_U} <span class="string">';'</span>])
6120527             eval([<span class="string">'vec_V=Data.'</span> Data.ListVarName{ivar_V} <span class="string">';'</span>])
6130528             <span class="keyword">if</span> ~isempty(ivar_X) &amp;&amp; ~isempty(ivar_Y)<span class="comment">% 2D field (with unstructured coordinates or structured ones (then ivar_X and ivar_Y empty)</span>
6140529                 eval([<span class="string">'vec_X=Data.'</span> Data.ListVarName{ivar_X} <span class="string">';'</span>])
6150530                 eval([<span class="string">'vec_Y=Data.'</span> Data.ListVarName{ivar_Y} <span class="string">';'</span>])
6160531             <span class="keyword">elseif</span> numel(VarType.coord)==2 &amp; VarType.coord~=[0 0];<span class="comment">%coordinates defines by dimension variables</span>
6170532                 eval([<span class="string">'y=Data.'</span> Data.ListVarName{VarType.coord(1)} <span class="string">';'</span>])
6180533                 eval([<span class="string">'x=Data.'</span> Data.ListVarName{VarType.coord(2)} <span class="string">';'</span>])
6190534                 <span class="keyword">if</span> numel(y)==2 <span class="comment">% y defined by first and last values on aregular mesh</span>
6200535                     y=linspace(y(1),y(2),size(vec_U,1));
6210536                 <span class="keyword">end</span>
6220537                 <span class="keyword">if</span> numel(x)==2 <span class="comment">% y defined by first and last values on aregular mesh</span>
6230538                     x=linspace(x(1),x(2),size(vec_U,2));
6240539                 <span class="keyword">end</span>
6250540                 [vec_X,vec_Y]=meshgrid(x,y); 
6260541             <span class="keyword">else</span>
6270542                 <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'error in plot_field: bad coordinate definition for vector field'</span>)
6280543                 <span class="keyword">return</span>
6290544             <span class="keyword">end</span>
6300545             <span class="keyword">if</span> ~isempty(ivar_C)
6310546                  eval([<span class="string">'vec_C=Data.'</span> Data.ListVarName{ivar_C} <span class="string">';'</span>]) ;
6320547                  vec_C=reshape(vec_C,1,numel(vec_C));
6330548                  test_C=1;
6340549             <span class="keyword">end</span>
6350550             <span class="keyword">if</span> ~(isfield(PlotParam.Vectors,<span class="string">'HideWarning'</span>)&amp;&amp; isequal(PlotParam.Vectors.HideWarning,1))&amp;&amp;~isempty(ivar_F) &amp;&amp;~test_black
6360551                 <span class="keyword">if</span> numel(ivar_F)&gt;1
6370552                     <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>(<span class="string">'multiple warning flags in plot_field.m, make a selection'</span>,<span class="string">'ERROR'</span>)
6380553                     <span class="keyword">return</span>
6390554                 <span class="keyword">elseif</span> test_vec
6400555                     eval([<span class="string">'AxeData.F=Data.'</span> Data.ListVarName{ivar_F} <span class="string">';'</span>]) <span class="comment">% flags for false vectors</span>
6410556                     test_black=1;
6420557                 <span class="keyword">end</span>
6430558             <span class="keyword">end</span>
6440559             <span class="keyword">if</span> ~isempty(ivar_FF) &amp;&amp; ~test_false
6450560                <span class="keyword">if</span> numel(ivar_FF)&gt;1
6460561                     <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>(<span class="string">'multiple error flags in plot_field.m, make a selection'</span>,<span class="string">'ERROR'</span>)
6470562                     <span class="keyword">return</span>
6480563                <span class="keyword">else</span> <span class="comment">%A VOIR CAS IMAGES</span>
6490564                     eval([<span class="string">'AxeData.FF=Data.'</span> Data.ListVarName{ivar_FF} <span class="string">';'</span>]) <span class="comment">% flags for false vectors</span>
6500565                     test_false=1;
6510566                <span class="keyword">end</span>
6520567             <span class="keyword">end</span>
6530568         <span class="keyword">end</span>
6540569     <span class="keyword">elseif</span> ~isempty(ivar_C) <span class="comment">%scalar or image</span>
6550570         <span class="keyword">if</span> test_ima
6560571              <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'attempt to plot two scalar fields or images'</span>)
6570572             <span class="keyword">return</span>
6580573         <span class="keyword">end</span>
6590574         eval([<span class="string">'A=Data.'</span> Data.ListVarName{ivar_C} <span class="string">';'</span>]) ;<span class="comment">% scalar represented as color image</span>
6600575         test_ima=1;
6610576         <span class="keyword">if</span> ~isempty(ivar_X) &amp;&amp; ~isempty(ivar_Y)<span class="comment">% 2D field (with unstructured coordinates or structured ones (then ivar_X and ivar_Y empty)</span>
6620577             eval([<span class="string">'AX=Data.'</span> Data.ListVarName{ivar_X} <span class="string">';'</span>])
6630578             eval([<span class="string">'AY=Data.'</span> Data.ListVarName{ivar_Y} <span class="string">';'</span>])
6640579             [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',[],[],<span class="string">'np&gt;256'</span>);  <span class="comment">% interpolate on a grid</span>
6650580         <span class="keyword">elseif</span> numel(VarType.coord)&gt;=2 &amp; VarType.coord(1:2)~=[0 0];<span class="comment">%structured coordinates</span>
6660581             eval([<span class="string">'AY=Data.'</span> Data.ListVarName{VarType.coord(1)} <span class="string">';'</span>])
6670582             eval([<span class="string">'AX=Data.'</span> Data.ListVarName{VarType.coord(2)} <span class="string">';'</span>])
6680583             test_interp_X=0; <span class="comment">%default, regularly meshed X coordinate</span>
6690584             test_interp_Y=0; <span class="comment">%default, regularly meshed Y coordinate</span>
6700585             <span class="keyword">if</span> numel(AY)&gt;2
6710586                 DAY=diff(AY);
6720587                 DAY_min=min(DAY);
6730588                 DAY_max=max(DAY);
6740589                 <span class="keyword">if</span> sign(DAY_min)~=sign(DAY_max);<span class="comment">% =1 for increasing values, 0 otherwise</span>
6750590                      errormsg=[<span class="string">'errror in plot_field.m: non monotonic dimension variable # '</span> ListVarName{VarType.coord(1)} ];
6760591                       <span class="keyword">return</span>
6770592                 <span class="keyword">end</span> 
6780593                 test_interp_Y=(DAY_max-DAY_min)&gt; 0.0001*abs(DAY_max);
6790594             <span class="keyword">end</span>
6800595             <span class="keyword">if</span> numel(AX)&gt;2
6810596                 DAX=diff(AX);
6820597                 DAX_min=min(DAX);
6830598                 DAX_max=max(DAX);
6840599                 <span class="keyword">if</span> sign(DAX_min)~=sign(DAX_max);<span class="comment">% =1 for increasing values, 0 otherwise</span>
6850600                      errormsg=[<span class="string">'errror in plot_field.m: non monotonic dimension variable # '</span> ListVarName{VarType.coord(2)} ];
6860601                       <span class="keyword">return</span>
6870602                 <span class="keyword">end</span> 
6880603                 test_interp_X=(DAX_max-DAX_min)&gt; 0.0001*abs(DAX_max);
6890604             <span class="keyword">end</span> 
6900605             <span class="keyword">if</span> test_interp_Y         
6910606                 npxy(1)=max([256 floor((AY(end)-AY(1))/DAY_min) floor((AY(end)-AY(1))/DAY_max)]);
6920607                 yI=linspace(AY(1),AY(end),npxy(1));
6930608                 <span class="keyword">if</span> ~test_interp_X
6940609                     xI=linspace(AX(1),AX(2),size(A,2));<span class="comment">%default</span>
6950610                     AX=xI;
6960611                 <span class="keyword">end</span>
6970612             <span class="keyword">end</span>
6980613             <span class="keyword">if</span> test_interp_X 
6990614                 npxy(1)=max([256 floor((AX(end)-AX(1))/DAX_min) floor((AX(end)-AX(1))/DAX_max)]);
7000615                 xI=linspace(AX(1),AX(end),npxy(2));   
7010616                 <span class="keyword">if</span> ~test_interp_Y
7020617                    yI=linspace(AY(1),AY(end),size(A,1));
7030618                    AY=yI;
7040619                 <span class="keyword">end</span>
7050620             <span class="keyword">end</span>
7060621             <span class="keyword">if</span> test_interp_X || test_interp_Y               
7070622                 [AX2D,AY2D]=meshgrid(AX,AY);
7080623                 A=interp2(AX2D,AY2D,double(A),xI,yI');
7090624             <span class="keyword">end</span>
7100625             AX=[AX(1) AX(end)];<span class="comment">% keep only the lower and upper bounds for image represnetation</span>
7110626             AY=[AY(1) AY(end)];
7120627         <span class="keyword">else</span>
7130628             <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'ERROR'</span>,<span class="string">'bad coordinate definition for vector field'</span>)
7140629             <span class="keyword">return</span>
7150630         <span class="keyword">end</span>
7160631     <span class="keyword">end</span>       
7170632     <span class="keyword">if</span> isfield(Data,<span class="string">'VarAttribute'</span>)
7180633         VarAttribute=Data.VarAttribute;
7190634     <span class="keyword">end</span>   
7200635 <span class="keyword">end</span> 
7210636
7220637 <span class="comment">%%%%%%%%%%%%%%%%%%%%%   image or scalar plot %%%%%%%%%%%%%%%%%%%%%%%%%%</span>
7230638
7240639 <span class="keyword">if</span> ~isfield(PlotParam.Scalar,<span class="string">'Contours'</span>)
7250640     PlotParam.Scalar.Contours=0; <span class="comment">%default</span>
7260641 <span class="keyword">end</span>
7270642 PlotParamOut=PlotParam; <span class="comment">%default</span>
7280643 <span class="keyword">if</span> test_ima
7290644     <span class="comment">% distinguish B/W and color images</span>
7300645     np=size(A);<span class="comment">%size of image</span>
7310646     siz=size(np);
7320647     <span class="comment">%set the color map</span>
7330648     <span class="keyword">if</span> siz(2)==2 <span class="comment">%for black and white images</span>
7340649         <span class="keyword">if</span> ~isfield(PlotParam.Scalar,<span class="string">'AutoScal'</span>)
7350650             PlotParam.Scalar.AutoScal=0;<span class="comment">%default</span>
7360651         <span class="keyword">end</span>
7370652         <span class="keyword">if</span> ~isfield(PlotParam.Scalar,<span class="string">'MinA'</span>)
7380653             PlotParam.Scalar.MinA=[];<span class="comment">%default</span>
7390654         <span class="keyword">end</span>
7400655         <span class="keyword">if</span> ~isfield(PlotParam.Scalar,<span class="string">'MaxA'</span>)
7410656             PlotParam.Scalar.MaxA=[];<span class="comment">%default</span>
7420657         <span class="keyword">end</span>
7430658         <span class="keyword">if</span> isequal(PlotParam.Scalar.AutoScal,0)|isempty(PlotParam.Scalar.MinA)|~isa(PlotParam.Scalar.MinA,<span class="string">'double'</span><span class="comment">%correct if there is no numerical data in edit box</span>
7440659             MinA=double(min(min(A)));
7450660         <span class="keyword">else</span>
7460661             MinA=PlotParam.Scalar.MinA; 
7470662         <span class="keyword">end</span>;
7480663         <span class="keyword">if</span> isequal(PlotParam.Scalar.AutoScal,0)|isempty(PlotParam.Scalar.MaxA)|~isa(PlotParam.Scalar.MaxA,<span class="string">'double'</span>) <span class="comment">%correct if there is no numerical data in edit box</span>
7490664             MaxA=double(max(max(A)));
7500665         <span class="keyword">else</span>
7510666             MaxA=PlotParam.Scalar.MaxA; 
7520667         <span class="keyword">end</span>;
7530668         PlotParamOut.Scalar.MinA=MinA;
7540669         PlotParamOut.Scalar.MaxA=MaxA;
7550670         axes(haxes)
7560671         <span class="keyword">if</span> isequal(PlotParam.Scalar.Contours,1)
7570672             <span class="keyword">if</span> ~isempty(hima) &amp; ishandle(hima)
7580673                 delete(hima)
7590674             <span class="keyword">end</span>
7600675             <span class="keyword">if</span> ~isfield(PlotParam.Scalar,<span class="string">'IncrA'</span>)
7610676                 PlotParam.Scalar.IncrA=[];
7620677             <span class="keyword">end</span>
7630678             <span class="keyword">if</span> isempty(PlotParam.Scalar.IncrA)<span class="comment">% | PlotParam.Scalar.AutoScal==0</span>
7640679                 cont=<a href="#_sub5" class="code" title="subfunction YTick=colbartick(MinA,MaxA)">colbartick</a>(MinA,MaxA);
7650680                 intercont=cont(2)-cont(1);<span class="comment">%default</span>
7660681                 PlotParamOut.Scalar.IncrA=intercont;
7670682             <span class="keyword">else</span>
7680683                intercont=PlotParam.Scalar.IncrA;
7690684             <span class="keyword">end</span>
7700685             B=A;           
7710686             abscontmin=intercont*floor(MinA/intercont);
7720687             abscontmax=intercont*ceil(MaxA/intercont);
7730688             contmin=intercont*floor(min(min(B))/intercont);
7740689             contmax=intercont*ceil(max(max(B))/intercont);
7750690             cont_pos_plus=[0:intercont:contmax];
7760691             cont_pos_min=[double(contmin):intercont:-intercont];
7770692             cont_pos=[cont_pos_min cont_pos_plus];
7780693             sizpx=(AX(end)-AX(1))/(np(2)-1);
7790694             sizpy=(AY(1)-AY(end))/(np(1)-1);
7800695             x_cont=[AX(1):sizpx:AX(end)]; <span class="comment">% pixel x coordinates for image display</span>
7810696             y_cont=[AY(1):-sizpy:AY(end)]; <span class="comment">% pixel x coordinates for image display</span>
7820697             txt=ver;<span class="comment">%version of Matlab</span>
7830698             Release=txt(1).Release;
7840699             relnumb=str2num(Release(3:4));
7850700             <span class="keyword">if</span> relnumb &gt;= 14
7860701                     vec=linspace(0,1,(abscontmax-abscontmin)/intercont);<span class="comment">%define a greyscale colormap with steps intercont</span>
7870702                 map=[vec' vec' vec'];
7880703                 colormap(map);
7890704                 [var,hcontour]=contour(x_cont,y_cont,B,cont_pos);       
7900705                 set(hcontour,<span class="string">'Fill'</span>,<span class="string">'on'</span>)
7910706                 set(hcontour,<span class="string">'LineStyle'</span>,<span class="string">'none'</span>)
7920707                 hold on
7930708             <span class="keyword">end</span>
7940709             [var_p,hcontour_p]=contour(x_cont,y_cont,B,cont_pos_plus,<span class="string">'k-'</span>);
7950710             hold on
7960711             [var_m,hcontour_m]=contour(x_cont,y_cont,B,cont_pos_min,<span class="string">':'</span>);
7970712             set(hcontour_m,<span class="string">'LineColor'</span>,[1 1 1])
7980713             hold off
7990714             caxis([abscontmin abscontmax])
8000715             colormap(map);
8010716         <span class="keyword">end</span>
8020717         <span class="keyword">if</span> ~isequal(PlotParam.Scalar.Contours,1)       
8030718             <span class="comment">% rescale the grey levels with min and max, put a grey scale colorbar</span>
8040719             <span class="keyword">if</span> (isfield(PlotParam.Scalar,<span class="string">'BW'</span>)&amp; (isequal(PlotParam.Scalar.BW,1))|isa(A,<span class="string">'uint8'</span>)| isa(A,<span class="string">'uint16'</span>))<span class="comment">%images</span>
8050720                 B=A;
8060721                 vec=linspace(0,1,255);<span class="comment">%define a linear greyscale colormap</span>
8070722                 map=[vec' vec' vec'];
8080723                 colormap(map);  <span class="comment">%grey scale color map</span>
8090724             <span class="keyword">else</span>
8100725                 B=A;
8110726                 colormap(<span class="string">'default'</span>); <span class="comment">% standard faulse colors for div, vort , scalar fields</span>
8120727             <span class="keyword">end</span>
8130728         <span class="keyword">end</span>
8140729     <span class="keyword">elseif</span> siz(2)==3 <span class="comment">%color images</span>
8150730         axes(haxes)
8160731         B=uint8(A);
8170732         MinA=0;
8180733         MaxA=255;
8190734     <span class="keyword">end</span>
8200735     <span class="keyword">if</span> ~isequal(PlotParam.Scalar.Contours,1)
8210736         <span class="comment">%interpolate to increase resolution</span>
8220737         test_interp=1;
8230738         <span class="keyword">if</span> max(np) &lt;= 64
8240739             npxy=8*np;<span class="comment">% increase the resolution 8 times</span>
8250740         <span class="keyword">elseif</span> max(np) &lt;= 128
8260741             npxy=4*np;<span class="comment">% increase the resolution 4 times</span>
8270742         <span class="keyword">elseif</span> max(np) &lt;= 256
8280743             npxy=2*np;<span class="comment">% increase the resolution 2 times</span>
8290744         <span class="keyword">else</span>
8300745             npxy=np;
8310746             test_interp=0; <span class="comment">% no interpolation done</span>
8320747         <span class="keyword">end</span>
8330748         <span class="keyword">if</span> test_interp==1<span class="comment">%if we interpolate</span>
8340749             x=[AX(1):(AX(2)-AX(1))/(np(2)-1):AX(2)];
8350750             y=[AY(1):(AY(2)-AY(1))/(np(1)-1):AY(2)];
8360751             [X,Y]=meshgrid(x,y);
8370752 <span class="comment">%             xi=[AX(1):(AX(2)-AX(1))/(npxy(2)-1):AX(2)];</span>
8380753 <span class="comment">%             yi=[AY(1):(AY(2)-AY(1))/(npxy(1)-1):AY(2)];</span>
8390754
8400755             xi=linspace(AX(1),AX(2),npxy(2));
8410756             yi=linspace(AY(1),AY(2),npxy(1));
8420757             B = interp2(X,Y,double(B),xi,yi');
8430758         <span class="keyword">end</span>       
8440759         <span class="keyword">if</span> isempty(hima)
8450760             tag=get(haxes,<span class="string">'Tag'</span>);
8460761             hima=imagesc(AX,AY,B,[MinA MaxA]);
8470762             set(hima,<span class="string">'Tag'</span>,<span class="string">'ima'</span>,<span class="string">'HitTest'</span>,<span class="string">'off'</span>)
8480763             set(haxes,<span class="string">'Tag'</span>,tag);<span class="comment">%preserve the axes tag (removed by image fct !!!)</span>
8490764             <span class="comment">%axis(haxes,'image'); % preserve the image aspect ratio     %TESTMOD</span>
8500765         <span class="keyword">else</span>
8510766             set(hima,<span class="string">'CData'</span>,B);
8520767             <span class="keyword">if</span> MinA&lt;MaxA
8530768                 caxis([MinA MaxA])
8540769             <span class="keyword">else</span>
8550770                 caxis([MinA MinA+1])
8560771             <span class="keyword">end</span>
8570772             set(hima,<span class="string">'XData'</span>,AX);
8580773             set(hima,<span class="string">'YData'</span>,AY);
8590774         <span class="keyword">end</span>
8600775     <span class="keyword">end</span>
8610776     <span class="keyword">if</span> ~isstruct(AxeData)
8620777         AxeData=[];
8630778     <span class="keyword">end</span>
8640779     AxeData.A=A;
8650780     AxeData.AX=[AX(1) AX(end)];
8660781     AxeData.AY=[AY(1) AY(end)];
8670782     test_ima=1;
8680783     <span class="comment">%display the colorbar code for B/W images if Poscolorbar not empty</span>
8690784     <span class="keyword">if</span> siz(2)==2 &amp; exist(<span class="string">'PosColorbar'</span>,<span class="string">'var'</span>)&amp; ~isempty(PosColorbar)
8700785         <span class="keyword">if</span> isempty(hcol)|~ishandle(hcol)
8710786              hcol=colorbar;<span class="comment">%create new colorbar</span>
8720787         <span class="keyword">end</span>
8730788         <span class="keyword">if</span> length(PosColorbar)==4
8740789                  set(hcol,<span class="string">'Position'</span>,PosColorbar)           
8750790         <span class="keyword">end</span> 
8760791         YTick=0;<span class="comment">%default</span>
8770792         <span class="keyword">if</span> MaxA&gt;MinA
8780793             <span class="keyword">if</span> isequal(PlotParam.Scalar.Contours,1)
8790794                 colbarlim=get(hcol,<span class="string">'YLim'</span>);
8800795                 scale_bar=(colbarlim(2)-colbarlim(1))/(abscontmax-abscontmin);               
8810796                 YTick=cont_pos(2:end-1);
8820797                 YTick_scaled=colbarlim(1)+scale_bar*(YTick-abscontmin);
8830798                 set(hcol,<span class="string">'YTick'</span>,YTick_scaled);
8840799             <span class="keyword">elseif</span> (isfield(PlotParam.Scalar,<span class="string">'BW'</span>) &amp; isequal(PlotParam.Scalar.BW,1))|isa(A,<span class="string">'uint8'</span>)| isa(A,<span class="string">'uint16'</span>)<span class="comment">%images</span>
8850800                 hi=get(hcol,<span class="string">'children'</span>);
8860801                 <span class="keyword">if</span> iscell(hi)<span class="comment">%multiple images in colorbar</span>
8870802                     hi=hi{1};
8880803                 <span class="keyword">end</span>
8890804                 set(hi,<span class="string">'YData'</span>,[MinA MaxA])
8900805                 set(hi,<span class="string">'CData'</span>,[1:256]')
8910806                 set(hcol,<span class="string">'YLim'</span>,[MinA MaxA])
8920807                 YTick=<a href="#_sub5" class="code" title="subfunction YTick=colbartick(MinA,MaxA)">colbartick</a>(MinA,MaxA);
8930808                 set(hcol,<span class="string">'YTick'</span>,YTick)               
8940809             <span class="keyword">else</span>
8950810                 hi=get(hcol,<span class="string">'children'</span>);
8960811                 <span class="keyword">if</span> iscell(hi)<span class="comment">%multiple images in colorbar</span>
8970812                     hi=hi{1};
8980813                 <span class="keyword">end</span>
8990814                 set(hi,<span class="string">'YData'</span>,[MinA MaxA])
9000815                 set(hi,<span class="string">'CData'</span>,[1:64]')
9010816                 YTick=<a href="#_sub5" class="code" title="subfunction YTick=colbartick(MinA,MaxA)">colbartick</a>(MinA,MaxA);
9020817                 set(hcol,<span class="string">'YLim'</span>,[MinA MaxA])
9030818                 set(hcol,<span class="string">'YTick'</span>,YTick)
9040819             <span class="keyword">end</span>
9050820             set(hcol,<span class="string">'Yticklabel'</span>,num2str(YTick'));
9060821         <span class="keyword">end</span>
9070822     <span class="keyword">elseif</span> ishandle(hcol)
9080823         delete(hcol); <span class="comment">%erase existing colorbar if not needed</span>
9090824     <span class="keyword">end</span>
9100825 <span class="keyword">else</span><span class="comment">%no scalar plot</span>
9110826     <span class="keyword">if</span> ~isempty(hima) &amp;&amp; ishandle(hima)
9120827         delete(hima)
9130828     <span class="keyword">end</span>
9140829     <span class="keyword">if</span> ~isempty(hcol)&amp;&amp; ishandle(hcol)
9150830        delete(hcol)
9160831     <span class="keyword">end</span>
9170832     AxeData.A=[];
9180833     AxeData.AX=[];
9190834     AxeData.AY=[];
9200835     PlotParamOut=rmfield(PlotParamOut,<span class="string">'Scalar'</span>);
9210836 <span class="keyword">end</span>
9220837
9230838 <span class="comment">%%%%%%%%%%%%%%%%%%%%%   vector plot %%%%%%%%%%%%%%%%%%%%%%%%%%</span>
9240839 <span class="keyword">if</span> test_vec
9250840    <span class="comment">%vector scale representation</span>
9260841     <span class="keyword">if</span> size(vec_U,1)==numel(vec_Y) &amp;&amp; size(vec_U,2)==numel(vec_X); <span class="comment">% x, y  coordinate variables</span>
9270842         [vec_X,vec_Y]=meshgrid(vec_X,vec_Y);
9280843     <span class="keyword">end</span>   
9290844     vec_X=reshape(vec_X,1,numel(vec_X));<span class="comment">%reshape in matlab vectors</span>
9300845     vec_Y=reshape(vec_Y,1,numel(vec_Y));
9310846     vec_U=reshape(vec_U,1,numel(vec_U));
9320847     vec_V=reshape(vec_V,1,numel(vec_V));
9330848     MinMaxX=max(vec_X)-min(vec_X);
9340849     MinMaxY=max(vec_Y)-min(vec_Y);
9350850     AxeData.Mesh=sqrt((MinMaxX*MinMaxY)/length(vec_X));
9360851     <span class="keyword">if</span>  ~isfield(PlotParam.Vectors,<span class="string">'AutoVec'</span>) || isequal(PlotParam.Vectors.AutoVec,0)|| ~isfield(PlotParam.Vectors,<span class="string">'VecScale'</span>)<span class="keyword">...</span>
9370852                ||isempty(PlotParam.Vectors.VecScale)||~isa(PlotParam.Vectors.VecScale,<span class="string">'double'</span>) <span class="comment">%automatic vector scale</span>
9380853         scale=[];
9390854         <span class="keyword">if</span> test_false <span class="comment">%remove false vectors</span>
9400855             indsel=find(AxeData.FF==0);<span class="comment">%indsel =indices of good vectors</span>
9410856         <span class="keyword">else</span>     
9420857             indsel=[1:numel(vec_X)];<span class="comment">%</span>
9430858         <span class="keyword">end</span>
9440859         <span class="keyword">if</span> isempty(vec_U)
9450860             scale=1;
9460861         <span class="keyword">else</span>
9470862             <span class="keyword">if</span> isempty(indsel)
9480863                 MaxU=max(abs(vec_U));
9490864                 MaxV=max(abs(vec_V));
9500865             <span class="keyword">else</span>
9510866                 MaxU=max(abs(vec_U(indsel)));
9520867                 MaxV=max(abs(vec_V(indsel)));
9530868             <span class="keyword">end</span>
9540869             scale=MinMaxX/(max(MaxU,MaxV)*50);
9550870             PlotParam.Vectors.VecScale=scale;<span class="comment">%update the 'scale' display</span>
9560871         <span class="keyword">end</span>
9570872     <span class="keyword">else</span>
9580873         scale=PlotParam.Vectors.VecScale;  <span class="comment">%impose the length of vector representation</span>
9590874     <span class="keyword">end</span>;
9600875     
9610876     <span class="comment">%record vectors on the plotting axes</span>
9620877     <span class="keyword">if</span> test_C==0
9630878         vec_C=ones(1,numel(vec_X));
9640879     <span class="keyword">end</span>
9650880     AxeData.X=vec_X';
9660881     AxeData.Y=vec_Y';
9670882     AxeData.U=vec_U';
9680883     AxeData.V=vec_V';
9690884     AxeData.C=vec_C';
9700885     <span class="keyword">if</span> isfield(Data,<span class="string">'W'</span>)
9710886         AxeData.W=Data.W;
9720887     <span class="keyword">end</span>
9730888     
9740889     <span class="comment">%decimate by a factor 2 in vector mesh(4 in nbre of vectors)</span>
9750890     <span class="keyword">if</span> isfield(PlotParam.Vectors,<span class="string">'decimate4'</span>)&amp;isequal(PlotParam.Vectors.decimate4,1)
9760891         diffy=diff(vec_Y); <span class="comment">%difference dy=vec_Y(i+1)-vec_Y(i)</span>
9770892         dy_thresh=max(abs(diffy))/2;
9780893         ind_jump=find(abs(diffy) &gt; dy_thresh); <span class="comment">%indices with diff(vec_Y)&gt; max/2, detect change of line</span>
9790894         ind_sel=[1:ind_jump(1)];<span class="comment">%select the first line</span>
9800895         <span class="keyword">for</span> i=2:2:length(ind_jump)-1
9810896             ind_sel=[ind_sel [ind_jump(i)+1:ind_jump(i+1)]];<span class="comment">% select the odd lines</span>
9820897         <span class="keyword">end</span>
9830898         nb_sel=length(ind_sel);
9840899         ind_sel=ind_sel([1:2:nb_sel]);<span class="comment">% take half the points on a line</span>
9850900         vec_X=vec_X(ind_sel);
9860901         vec_Y=vec_Y(ind_sel);
9870902         vec_U=vec_U(ind_sel);
9880903         vec_V=vec_V(ind_sel);
9890904         vec_C=vec_C(ind_sel);
9900905         <span class="keyword">if</span> isfield(Data,<span class="string">'F'</span>)&amp;&amp; isequal(size(Data.F),size(vec_X))sdfsdf
9910906             Data.F=Data.F(ind_sel);
9920907         <span class="keyword">end</span>
9930908         <span class="keyword">if</span> isfield(Data,<span class="string">'FF'</span>)&amp;&amp; isequal(size(Data.FF),size(vec_X))
9940909             Data.FF=Data.FF(ind_sel);
9950910         <span class="keyword">end</span>
9960911     <span class="keyword">end</span>
9970912     
9980913     <span class="comment">%get main level color code</span>
9990914     [colorlist,col_vec,PlotParamOut.Vectors]=<a href="set_col_vec.html" class="code" title="function [colorlist,col_vec,colcode_out]=set_col_vec(colcode,vec_C)">set_col_vec</a>(PlotParam.Vectors,vec_C);
10000915     <span class="comment">% take flags into account: add flag colors to the list of colors</span>
10010916     sizlist=size(colorlist);
10020917     nbcolor=sizlist(1);
10030918     <span class="keyword">if</span> test_black &amp;&amp; isfield (Data,<span class="string">'F'</span>)
10040919        nbcolor=nbcolor+1;
10050920        colorlist(nbcolor,:)=[0 0 0]; <span class="comment">%add black to the list of colors</span>
10060921        <span class="keyword">if</span> isfield(Data,<span class="string">'FF'</span>)
10070922             ind_flag=find(Data.F~=1 &amp; Data.FF==0);  <span class="comment">%flag warning but not faulse</span>
10080923        <span class="keyword">else</span>
10090924             ind_flag=find(Data.F~=1);
10100925        <span class="keyword">end</span>
10110926        col_vec(ind_flag)=nbcolor;   
10120927     <span class="keyword">end</span>
10130928     nbcolor=nbcolor+1;
10140929     <span class="keyword">if</span> test_false &amp;&amp; isfield (Data,<span class="string">'FF'</span>)
10150930         ind_flag=find(Data.FF~=0);
10160931         <span class="keyword">if</span> isfield(PlotParam.Vectors,<span class="string">'HideFalse'</span>) &amp; PlotParam.Vectors.HideFalse==1
10170932             colorlist(nbcolor,:)=[NaN NaN NaN];<span class="comment">% no plot of false vectors</span>
10180933         <span class="keyword">else</span>
10190934             colorlist(nbcolor,:)=[1 0 1];<span class="comment">% magenta color</span>
10200935         <span class="keyword">end</span>
10210936         col_vec(ind_flag)=nbcolor;
10220937     <span class="keyword">end</span>
10230938     <span class="comment">%plot vectors:</span>
10240939     <a href="#_sub4" class="code" title="subfunction quiresetn(haxes,x,y,u,v,scale,colorlist,col_vec)">quiresetn</a>(haxes,vec_X,vec_Y,vec_U,vec_V,scale,colorlist,col_vec);   
10250940 <span class="keyword">else</span>
10260941     hvec=findobj(haxes,<span class="string">'Tag'</span>,<span class="string">'vel'</span>);
10270942     <span class="keyword">if</span> ~isempty(hvec)
10280943         delete(hvec);
10290944     <span class="keyword">end</span>
10300945     AxeData.X=[];
10310946     AxeData.Y=[];
10320947     AxeData.U=[];
10330948     AxeData.V=[];
10340949     AxeData.C=[];
10350950     AxeData.W=[];
10360951     AxeData.Mesh=[];
10370952     PlotParamOut=rmfield(PlotParamOut,<span class="string">'Vectors'</span>);
10380953 <span class="keyword">end</span>
10390954 <span class="keyword">if</span> isfield(Data,<span class="string">'Z'</span>)
10400955     AxeData.Z=Data.Z;<span class="comment">% A REVOIR</span>
10410956 <span class="keyword">end</span>
10420957 listfields={<span class="string">'AY'</span>,<span class="string">'AX'</span>,<span class="string">'A'</span>,<span class="string">'X'</span>,<span class="string">'Y'</span>,<span class="string">'U'</span>,<span class="string">'V'</span>,<span class="string">'C'</span>,<span class="string">'W'</span>,<span class="string">'F'</span>,<span class="string">'FF'</span>};
10430958 listdim={<span class="string">'AY'</span>,<span class="string">'AX'</span>,{<span class="string">'AY'</span>,<span class="string">'AX'</span>},<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>,<span class="string">'nb_vectors'</span>};
10440959 Role={<span class="string">'coord_y'</span>,<span class="string">'coord_x'</span>,<span class="string">'scalar'</span>,<span class="string">'coord_x'</span>,<span class="string">'coord_y'</span>,<span class="string">'vector_x'</span>,<span class="string">'vector_y'</span>,<span class="string">'scalar'</span>,<span class="string">'vector_z'</span>,<span class="string">'warnflag'</span>,<span class="string">'falseflag'</span>};
10450960 ind_select=[];
10460961 nbvar=0;
10470962
10480963 <span class="keyword">for</span> ilist=1:numel(listfields)
10490964     eval([<span class="string">'testvar=isfield(AxeData,listfields{ilist}) &amp;&amp; ~isempty(AxeData.'</span> listfields{ilist} <span class="string">');'</span>])
10500965     <span class="keyword">if</span> testvar
10510966         nbvar=nbvar+1;
10520967         AxeData.ListVarName{nbvar}=listfields{ilist};
10530968         AxeData.VarDimName{nbvar}=listdim{ilist};
10540969         AxeData.VarAttribute{nbvar}.Role=Role{ilist};
10550970     <span class="keyword">end</span>
10560971 <span class="keyword">end</span>
10570972
10580973 <span class="comment">% adjust the size of the plot to include the whole field, except if KeepLim=1</span>
10590974 <span class="keyword">if</span> ~(exist(<span class="string">'KeepLim'</span>,<span class="string">'var'</span>) &amp;&amp; isequal(KeepLim,1))  <span class="comment">%adjust the graph limits*</span>
10600975         test_lim=0;
10610976         <span class="keyword">if</span> test_vec
10620977             Xlim=[min(vec_X) max(vec_X)];
10630978             Ylim=[min(vec_Y) max(vec_Y)];
10640979             test_lim=1;
10650980             <span class="keyword">if</span> test_ima<span class="comment">%both background image and vectors coexist, take the wider bound</span>
10660981                 Xlim(1)=min(AX(1),Xlim(1));
10670982                 Xlim(2)=max(AX(end),Xlim(2));
10680983                 Ylim(1)=min(AY(end),Ylim(1));
10690984                 Ylim(2)=max(AY(1),Ylim(2));
10700985             <span class="keyword">end</span>
10710986         <span class="keyword">elseif</span> test_ima <span class="comment">%only image plot</span>
10720987             Xlim(1)=min(AX(1),AX(end));
10730988             Xlim(2)=max(AX(1),AX(end));
10740989             Ylim(1)=min(AY(1),AY(end));
10750990             Ylim(2)=max(AY(1),AY(end));
10760991             test_lim=1;
10770992         <span class="keyword">end</span> 
10780993         <span class="keyword">if</span> test_lim
10790994             set(haxes,<span class="string">'XLim'</span>,Xlim);<span class="comment">% set x limits of frame in axes coordinates</span>
10800995             set(haxes,<span class="string">'YLim'</span>,Ylim);<span class="comment">% set y limits of frame in axes coordinate</span>
10810996         <span class="keyword">end</span>
10820997 <span class="keyword">end</span>
10830998 <span class="keyword">if</span> ~(isfield(PlotParam,<span class="string">'Auto_xy'</span>) &amp;&amp; isequal(PlotParam.Auto_xy,1))
10840999      set(haxes,<span class="string">'DataAspectRatio'</span>,[1 1 1])
10851000 <span class="keyword">end</span>
10861001 set(haxes,<span class="string">'YDir'</span>,<span class="string">'normal'</span>)
10871002
10881003 <span class="comment">%---------------------------------------------</span>
10891004 <span class="comment">%function for plotting vectors</span>
10901005 <span class="comment">%------------------------------------------------</span>
10911006 <span class="comment">%INPUT:</span>
10921007 <span class="comment">% haxes: handles of the plotting axes</span>
10931008 <span class="comment">%x,y,u,v: vectors coordinates and vector components to plot, arrays withb the same dimension</span>
10941009 <span class="comment">% scale: scaling factor for vector length representation</span>
10951010 <span class="comment">%colorlist(icolor,:): list of vector colors, dim (nbcolor,3), depending on color #i</span>
10961011 <span class="comment">%col_vec: matlab vector setting the color number #i for each velocity vector</span>
10971012 <a name="_sub4" href="#_subfunctions" class="code">function quiresetn(haxes,x,y,u,v,scale,colorlist,col_vec)</a>
10981013
10991014 <span class="comment">%define arrows</span>
11001015 theta=0.5 ;<span class="comment">%angle arrow</span>
11011016 alpha=0.3 ;<span class="comment">%length arrow</span>
11021017 rot=alpha*[cos(theta) -sin(theta); sin(theta) cos(theta)]';
11031018 <span class="comment">%find the existing lines</span>
11041019 <span class="comment">%h=findobj(gca,'Type','Line');% search existing lines in the current axes</span>
11051020 h=findobj(haxes,<span class="string">'Tag'</span>,<span class="string">'vel'</span>);<span class="comment">% search existing lines in the current axes</span>
11061021 sizh=size(h);
11071022 set(h,<span class="string">'EraseMode'</span>,<span class="string">'xor'</span>);
11081023 set(haxes,<span class="string">'NextPlot'</span>,<span class="string">'replacechildren'</span>);
11091024 <span class="comment">%htext=findobj('Tag','scalevec');</span>
11101025       
11111026 <span class="comment">%drawnow</span>
11121027 <span class="comment">%create lines (if no lines) or modify them</span>
11131028 <span class="keyword">if</span> ~isequal(size(col_vec),size(x))
11141029     col_vec=ones(size(x));<span class="comment">% case of error in col_vec input</span>
11151030 <span class="keyword">end</span>
11161031 sizlist=size(colorlist);
11171032 ncolor=sizlist(1);
11181033
11191034 <span class="keyword">for</span> icolor=1:ncolor
11201035     <span class="comment">%determine the line positions for each color icolor</span>
11211036     ind=find(col_vec==icolor);
11221037     xc=x(ind);
11231038     yc=y(ind);
11241039     uc=u(ind)*scale;
11251040     vc=v(ind)*scale;
11261041     n=size(xc);
11271042     xN=NaN*ones(size(xc));
11281043     matx=[xc(:) xc(:)+uc(:) xN(:)]';
11291044     matx=reshape(matx,1,3*n(2));
11301045     maty=[yc(:) yc(:)+vc(:) xN(:)]';
11311046     maty=reshape(maty,1,3*n(2));
11321047     
11331048     <span class="comment">%determine arrow heads</span>
11341049     arrowplus=rot*[uc;vc];
11351050     arrowmoins=rot'*[uc;vc];
11361051     x1=xc+uc-arrowplus(1,:);
11371052     x2=xc+uc;
11381053     x3=xc+uc-arrowmoins(1,:);
11391054     y1=yc+vc-arrowplus(2,:);
11401055     y2=yc+vc;
11411056     y3=yc+vc-arrowmoins(2,:);
11421057     matxar=[x1(:) x2(:) x3(:) xN(:)]';
11431058     matxar=reshape(matxar,1,4*n(2));
11441059     matyar=[y1(:) y2(:) y3(:) xN(:)]';
11451060     matyar=reshape(matyar,1,4*n(2));
11461061     <span class="comment">%draw the line or modify the existing ones</span>
11471062     isn=isnan(colorlist(icolor,:));<span class="comment">%test if color NaN</span>
11481063     <span class="keyword">if</span> 2*icolor &gt; sizh(1) <span class="comment">%if icolor exceeds the number of existing ones</span>
11491064         axes(haxes)
11501065         <span class="keyword">if</span> ~isn(1) <span class="comment">%if the vectors are visible color not nan</span>
11511066             <span class="keyword">if</span> n(2)&gt;0
11521067                 hold on
11531068                 line(matx,maty,<span class="string">'Color'</span>,colorlist(icolor,:),<span class="string">'Tag'</span>,<span class="string">'vel'</span>);<span class="comment">% plot new lines</span>
11541069                 line(matxar,matyar,<span class="string">'Color'</span>,colorlist(icolor,:),<span class="string">'Tag'</span>,<span class="string">'vel'</span>);<span class="comment">% plot arrows</span>
11551070             <span class="keyword">end</span>
11561071         <span class="keyword">end</span>
11571072     <span class="keyword">else</span>
11581073         <span class="keyword">if</span> isn(1)
11591074             delete(h(2*icolor-1))
11601075             delete(h(2*icolor))
11611076         <span class="keyword">else</span>
11621077             set(h(2*icolor-1),<span class="string">'Xdata'</span>,matx,<span class="string">'Ydata'</span>,maty);
11631078             set(h(2*icolor-1),<span class="string">'Color'</span>,colorlist(icolor,:));
11641079             set(h(2*icolor-1),<span class="string">'EraseMode'</span>,<span class="string">'xor'</span>);
11651080             set(h(2*icolor),<span class="string">'Xdata'</span>,matxar,<span class="string">'Ydata'</span>,matyar);
11661081             set(h(2*icolor),<span class="string">'Color'</span>,colorlist(icolor,:));
11671082             set(h(2*icolor),<span class="string">'EraseMode'</span>,<span class="string">'xor'</span>);
11681083         <span class="keyword">end</span>
11691084      <span class="keyword">end</span>
11701085 <span class="keyword">end</span>
11711086 <span class="keyword">if</span> sizh(1) &gt; 2*ncolor
11721087     <span class="keyword">for</span> icolor=ncolor+1 : sizh(1)/2<span class="comment">%delete additional objects</span>
11731088         delete(h(2*icolor-1))
11741089         delete(h(2*icolor))
11751090     <span class="keyword">end</span>
11761091 <span class="keyword">end</span>
11771092
11781093 <span class="comment">%---------------------------------------</span>
11791094 <span class="comment">%determine tick positions for colorbar</span>
11801095 <span class="comment">%------------------------------------</span>
11811096 <a name="_sub5" href="#_subfunctions" class="code">function YTick=colbartick(MinA,MaxA)</a>
11821097 <span class="comment">%determine tick positions with &quot;simple&quot; values between MinA and MaxA</span>
11831098 YTick=0;<span class="comment">%default</span>
11841099 maxabs=max([abs(MinA) abs(MaxA)]);
11851100 <span class="keyword">if</span> maxabs&gt;0
11861101 ord=10^(floor(log10(maxabs)));<span class="comment">%order of magnitude</span>
11871102 div=1;
11881103 siz2=1;
11891104 <span class="keyword">while</span> siz2&lt;2
11901105 <span class="comment">%     values=[-9:div:9];</span>
11911106     values=-10:div:10;
11921107     ind=find((ord*values-MaxA)&lt;0 &amp; (ord*values-MinA)&gt;0);<span class="comment">%indices of 'values' such that MinA&lt;ord*values&lt;MaxA</span>
11931108     siz=size(ind);
11941109     <span class="keyword">if</span> siz(2)&lt;4<span class="comment">%if there are less than 4 selected values (4 levels)</span>
11951110         values=[-9:0.5*div:9];
11961111         ind=find((ord*values-MaxA)&lt;0 &amp; (ord*values-MinA)&gt;0);
11971112     <span class="keyword">end</span>
11981113     siz2=size(ind,2);
11991114 <span class="comment">%     siz2=siz(2)</span>
12001115     div=div/10;
12011116 <span class="keyword">end</span>
12021117 YTick=ord*values(ind);
12031118 <span class="keyword">end</span></pre></div>
1204<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>
1205</body>
1206</html>
Note: See TracBrowser for help on using the repository browser.