source: MML/trunk/mml/doc_html/mml/plotcm.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 21.5 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of plotcm</title>
6  <meta name="keywords" content="plotcm">
7  <meta name="description" content="PLOTCM - Plots the horizontal and vertical corrector magnet families and">
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">mml</a> &gt; plotcm.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 mml&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>plotcm
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>PLOTCM - Plots the horizontal and vertical corrector magnet families and</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 [DeltaRF, HCMEnergyChangeTotal, DeltaL] = plotcm(varargin) </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">PLOTCM - Plots the horizontal and vertical corrector magnet families and
31         computes the energy change due to the horizontal correctors.
32
33  [DeltaRF, DeltaEnergy, DeltaL] = plotcm(DeviceList, ...)
34
35  INPUTS (optional)
36  1.  DeviceList
37  2. 'Position' {Default} or 'Phase' for the x-axis units
38  3. 'Display' - Plot orbit information {Default}
39     'NoDisplay' - No plot
40  4. 'Online', 'Model', 'Manual', 'Hardware', 'Physics', etc. (the usual Units and Mode flags)
41 
42
43  OUTPUTS
44  1. DeltaRF - RF change that equates to the energy change
45  2. DeltaEnergy - Total energy change due to the horizontal correctors
46  3. DeltaL - Path length change that equates to changing the RF by DeltaRF
47 
48  See also <a href="findrf.html" class="code" title="function [DeltaRF, HCMEnergyChangeTotal, DeltaL] = findrf(varargin)">findrf</a> <a href="findrf1.html" class="code" title="function [DeltaRF, RFnew, frf] = findrf1(DeltaRF, BPMFamily, BPMList, FileName)">findrf1</a> <a href="rmdisp.html" class="code" title="function [DeltaRF, BPM, c, DispOrbit] = rmdisp(varargin)">rmdisp</a>
49
50  Written by Greg Portmann</pre></div>
51
52<!-- crossreference -->
53<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
54This function calls:
55<ul style="list-style-image:url(../matlabicon.gif)">
56<li><a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>  GETFAMILYDATA - Gets data associated with the accelerator control</li><li><a href="gethcmfamily.html" class="code" title="function Family = gethcmfamily">gethcmfamily</a>      GETHCMFAMILY - Returns the default horizontal corrector family</li><li><a href="getmcf.html" class="code" title="function Alpha = getmcf(ModelString)">getmcf</a>       GETMCF - Returns the momentum compaction factor (MCF) stored in the AD or the model</li><li><a href="getrf.html" class="code" title="function [RFsp, RFam, DataTime, ErrorFlag] = getrf(varargin)">getrf</a>    GETRF - Gets the RF frequency</li><li><a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>    GETSP - Gets setpoint channels</li><li><a href="getspos.html" class="code" title="function S = getspos(Family, DeviceList)">getspos</a> GETSPOS - Returns the longitudinal position in meters</li><li><a href="getunits.html" class="code" title="function [Units, UnitsString] = getunits(Family, Field)">getunits</a> GETUNITS - Return the present family units and units string</li><li><a href="getvcmfamily.html" class="code" title="function Family = getvcmfamily">getvcmfamily</a>    GETVCMFAMILY - Returns the default vertical corrector family</li><li><a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>    HW2PHYSICS - Converts from 'Hardware' units to 'Physics' units</li></ul>
57This function is called by:
58<ul style="list-style-image:url(../matlabicon.gif)">
59<li><a href="findrf.html" class="code" title="function [DeltaRF, HCMEnergyChangeTotal, DeltaL] = findrf(varargin)">findrf</a>   FINDRF - Finds the RF frequency that minimizes the energy change due</li></ul>
60<!-- crossreference -->
61
62
63<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
64<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [DeltaRF, HCMEnergyChangeTotal, DeltaL] = plotcm(varargin)</a>
650002 <span class="comment">%PLOTCM - Plots the horizontal and vertical corrector magnet families and</span>
660003 <span class="comment">%         computes the energy change due to the horizontal correctors.</span>
670004 <span class="comment">%</span>
680005 <span class="comment">%  [DeltaRF, DeltaEnergy, DeltaL] = plotcm(DeviceList, ...)</span>
690006 <span class="comment">%</span>
700007 <span class="comment">%  INPUTS (optional)</span>
710008 <span class="comment">%  1.  DeviceList</span>
720009 <span class="comment">%  2. 'Position' {Default} or 'Phase' for the x-axis units</span>
730010 <span class="comment">%  3. 'Display' - Plot orbit information {Default}</span>
740011 <span class="comment">%     'NoDisplay' - No plot</span>
750012 <span class="comment">%  4. 'Online', 'Model', 'Manual', 'Hardware', 'Physics', etc. (the usual Units and Mode flags)</span>
760013 <span class="comment">%</span>
770014 <span class="comment">%</span>
780015 <span class="comment">%  OUTPUTS</span>
790016 <span class="comment">%  1. DeltaRF - RF change that equates to the energy change</span>
800017 <span class="comment">%  2. DeltaEnergy - Total energy change due to the horizontal correctors</span>
810018 <span class="comment">%  3. DeltaL - Path length change that equates to changing the RF by DeltaRF</span>
820019 <span class="comment">%</span>
830020 <span class="comment">%  See also findrf findrf1 rmdisp</span>
840021 <span class="comment">%</span>
850022 <span class="comment">%  Written by Greg Portmann</span>
860023
870024
880025 DisplayFlag = 1;
890026 XAxisFlag = <span class="string">'Position'</span>;
900027
910028
920029 <span class="comment">% Input parsing</span>
930030 InputFlags = {};
940031 <span class="keyword">for</span> i = length(varargin):-1:1
950032     <span class="keyword">if</span> isstruct(varargin{i})
960033         <span class="comment">% Ignor structures</span>
970034     <span class="keyword">elseif</span> iscell(varargin{i})
980035         <span class="comment">% Ignor cells</span>
990036     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'struct'</span>)
1000037         <span class="comment">% Just remove</span>
1010038         varargin(i) = [];
1020039     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'numeric'</span>)
1030040         <span class="comment">% Just remove</span>
1040041         varargin(i) = [];
1050042     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Position'</span>)
1060043         XAxisFlag = <span class="string">'Position'</span>;
1070044         varargin(i) = [];
1080045     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Phase'</span>)
1090046         XAxisFlag = <span class="string">'Phase'</span>;
1100047         varargin(i) = [];
1110048     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Display'</span>)
1120049         DisplayFlag = 1;
1130050         varargin(i) = [];
1140051     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'NoDisplay'</span>)
1150052         DisplayFlag = 0;
1160053         varargin(i) = [];
1170054     <span class="keyword">end</span>
1180055 <span class="keyword">end</span>
1190056
1200057
1210058 <span class="comment">% Get the default corrector families</span>
1220059 Family1 = <a href="gethcmfamily.html" class="code" title="function Family = gethcmfamily">gethcmfamily</a>;
1230060 Family2 = <a href="getvcmfamily.html" class="code" title="function Family = getvcmfamily">getvcmfamily</a>;
1240061
1250062
1260063 <span class="comment">% SP or AM ???</span>
1270064 x = <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(Family1, <span class="string">'Struct'</span>, varargin{:});
1280065 y = <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(Family2, <span class="string">'Struct'</span>, varargin{:});
1290066
1300067
1310068 <span class="comment">% Compute the energy change due to the correctors</span>
1320069 L = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(<span class="string">'Circumference'</span>);
1330070 HCM = <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x);
1340071 HCM = HCM.Data;
1350072
1360073
1370074 <span class="keyword">if</span> strcmpi(<a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(<span class="string">'Machine'</span>),<span class="string">'ALS'</span>)
1380075     <span class="comment">% For the ALS, either the HCMChicane magnets need to be included or</span>
1390076     <span class="comment">% the chicane &quot;part&quot; of the HCMs needs to be removed</span>
1400077     Energy = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(<span class="string">'Energy'</span>);
1410078     
1420079     <span class="comment">% Sector 6</span>
1430080     <span class="comment">%                   Off    1.9 GeV   1.5 GeV</span>
1440081     <span class="comment">% HCMCHICANEM(6,1)  80.0    18.0       ?</span>
1450082     <span class="comment">% HCMCHICANEM(6,1)  80.0    20.0       ?</span>
1460083     <span class="comment">% HCM(6,1)           0.0    18.8       ?</span>
1470084     ihcm = findrowindex([6 1], x.DeviceList);
1480085     <span class="keyword">if</span> length(ihcm) == 1
1490086         <span class="keyword">try</span>
1500087             <span class="keyword">if</span> <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(<span class="string">'HCMCHICANEM'</span>,[6 1]) &lt; 70
1510088                 <span class="comment">% Assume sector 6 chicane is on</span>
1520089                 <span class="keyword">if</span> Energy == 1.9
1530090                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, -18.8, [6 1]);
1540091                     x.Data(ihcm) = x.Data(ihcm) - 18.8;
1550092                 <span class="keyword">else</span>
1560093                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, -18.8*1.5/1.9, [6 1]);
1570094                     x.Data(ihcm) = x.Data(ihcm) - 18.8*1.5/1.9;
1580095                 <span class="keyword">end</span>
1590096             <span class="keyword">end</span>
1600097         <span class="keyword">catch</span>
1610098             fprintf(<span class="string">'%s\n'</span>, lasterr);
1620099             fprintf(<span class="string">'Problem reading HCMCHICANEM(6,1).  The chicane &quot;offset&quot; on HCM(6,1) will not be removed.\n\n'</span>);
1630100         <span class="keyword">end</span>
1640101     <span class="keyword">end</span>
1650102
1660103     <span class="comment">% Sector 11</span>
1670104     <span class="comment">%                    Off    1.9 GeV   1.5 GeV</span>
1680105     <span class="comment">% HCMCHICANEM(11,1)  80.0    40.5      52.0</span>
1690106     <span class="comment">% HCMCHICANEM(11,1)  80.0    40.5      52.0</span>
1700107     <span class="comment">% HCM(10,8)           0.0   -17.0     -14.0</span>
1710108     <span class="comment">% HCM(11,1)           0.0   -17.0     -14.0</span>
1720109     ihcm = findrowindex([10 8], x.DeviceList);
1730110     <span class="keyword">if</span> length(ihcm) == 1
1740111         <span class="keyword">try</span>
1750112             <span class="keyword">if</span> <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(<span class="string">'HCMCHICANEM'</span>,[11 1]) &lt; 60
1760113                 <span class="comment">% Assume sector 11 chicane is on</span>
1770114                 <span class="keyword">if</span> Energy == 1.9
1780115                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, 17, [10 8]);
1790116                     x.Data(ihcm) = x.Data(ihcm) + 17;
1800117                 <span class="keyword">else</span>
1810118                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, 14, [10 8]);
1820119                     x.Data(ihcm) = x.Data(ihcm) + 14;
1830120                 <span class="keyword">end</span>
1840121             <span class="keyword">end</span>
1850122         <span class="keyword">catch</span>
1860123             fprintf(<span class="string">'%s\n'</span>, lasterr);
1870124             fprintf(<span class="string">'Due to an error, the chicane &quot;offset&quot; on HCM(10,8) will not be removed.n\n'</span>);
1880125         <span class="keyword">end</span>
1890126     <span class="keyword">end</span>
1900127     ihcm = findrowindex([11 1], x.DeviceList);
1910128     <span class="keyword">if</span> length(ihcm) == 1
1920129         <span class="keyword">try</span>
1930130             <span class="keyword">if</span> <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(<span class="string">'HCMCHICANEM'</span>,[11 1]) &lt; 60
1940131                 <span class="comment">% Assume sector 11 chicane is on</span>
1950132                 <span class="keyword">if</span> Energy == 1.9
1960133                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, 17, [11 1]);
1970134                     x.Data(ihcm) = x.Data(ihcm) + 17;
1980135                 <span class="keyword">else</span>
1990136                     HCM(ihcm) = HCM(ihcm) + <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(x.FamilyName, x.Field, 14, [11 1]);
2000137                     x.Data(ihcm) = x.Data(ihcm) + 14;
2010138                 <span class="keyword">end</span>
2020139             <span class="keyword">end</span>
2030140         <span class="keyword">catch</span>
2040141             fprintf(<span class="string">'%s\n'</span>, lasterr);
2050142             fprintf(<span class="string">'Due to an error, the chicane &quot;offset&quot; on HCM(11,1) will not be removed.n\n'</span>);
2060143         <span class="keyword">end</span>
2070144     <span class="keyword">end</span>
2080145 <span class="keyword">end</span>
2090146
2100147
2110148 [DxHCM, DyHCM] = modeldisp([], x.FamilyName, x.DeviceList, <span class="string">'Numeric'</span>, <span class="string">'Physics'</span>);
2120149 HCMEnergyChange = -1 * HCM .* DxHCM / <a href="getmcf.html" class="code" title="function Alpha = getmcf(ModelString)">getmcf</a> / L;
2130150 HCMEnergyChangeTotal = sum(HCMEnergyChange);
2140151
2150152 <span class="comment">% Delta RF to move the energy change due to the corrector to the RF frequency</span>
2160153 DeltaRF = -1 * <a href="getrf.html" class="code" title="function [RFsp, RFam, DataTime, ErrorFlag] = getrf(varargin)">getrf</a> * <a href="getmcf.html" class="code" title="function Alpha = getmcf(ModelString)">getmcf</a> * HCMEnergyChangeTotal;                     <span class="comment">% Default units of getrf/setrf</span>
2170154 DeltaRFPhysics = -1 * <a href="getrf.html" class="code" title="function [RFsp, RFam, DataTime, ErrorFlag] = getrf(varargin)">getrf</a>(<span class="string">'Physics'</span>) * <a href="getmcf.html" class="code" title="function Alpha = getmcf(ModelString)">getmcf</a> * HCMEnergyChangeTotal;   <span class="comment">% Must be Hz</span>
2180155
2190156 DeltaL = L * <a href="getmcf.html" class="code" title="function Alpha = getmcf(ModelString)">getmcf</a> * HCMEnergyChangeTotal;
2200157
2210158
2220159 <span class="keyword">if</span> DisplayFlag
2230160     LeftGraphColor = <span class="string">'b'</span>;
2240161     RightGraphColor = <span class="string">'r'</span>;
2250162
2260163     [RFUnits, RFUnitsString] = <a href="getunits.html" class="code" title="function [Units, UnitsString] = getunits(Family, Field)">getunits</a>(<span class="string">'RF'</span>);
2270164
2280165     <span class="keyword">if</span> strcmpi(XAxisFlag, <span class="string">'Phase'</span>)
2290166         [BPMxspos, BPMyspos, Sx, Sy, Tune] = modeltwiss(<span class="string">'Phase'</span>, x.FamilyName, x.DeviceList, y.FamilyName, y.DeviceList);
2300167         BPMxspos = BPMxspos/2/pi;
2310168         BPMyspos = BPMyspos/2/pi;
2320169         XLabel = <span class="string">'Phase'</span>;
2330170     <span class="keyword">else</span>
2340171         BPMxspos = <a href="getspos.html" class="code" title="function S = getspos(Family, DeviceList)">getspos</a>(x.FamilyName, x.DeviceList);
2350172         BPMyspos = <a href="getspos.html" class="code" title="function S = getspos(Family, DeviceList)">getspos</a>(y.FamilyName, y.DeviceList);
2360173         XLabel = <span class="string">'Position [meters]'</span>;
2370174     <span class="keyword">end</span>
2380175
2390176
2400177     hfig = gcf;
2410178     clf reset
2420179     <span class="comment">%p = get(hfig, 'Position');</span>
2430180     <span class="comment">%set(hfig, 'Position', [p(1) p(2)-.8*p(4) p(3) p(4)+.8*p(4)]);</span>
2440181     
2450182     
2460183     subplot(2,1,1);
2470184     [ax, h1, h2] = plotyy(BPMxspos, x.Data, BPMxspos, -HCMEnergyChange);
2480185     FontSize = get(ax(1), <span class="string">'Fontsize'</span>);
2490186     title(sprintf(<span class="string">'%s (%g rms [%s]):  Energy Change  \\Delta p / p  = \\Sigma \\delta_{hcm} \\eta_{hcm} / (-\\alpha L) = %.3e'</span>, Family1, std(x.Data), x.UnitsString, HCMEnergyChangeTotal), <span class="string">'Fontsize'</span>,FontSize);
2500187     set(get(ax(1),<span class="string">'Ylabel'</span>), <span class="string">'String'</span>, sprintf(<span class="string">'%s [%s]'</span>, Family1, x.UnitsString), <span class="string">'Fontsize'</span>,FontSize);
2510188     set(get(ax(2),<span class="string">'Ylabel'</span>), <span class="string">'String'</span>, <span class="string">'-\Delta p/p'</span>, <span class="string">'Color'</span>, RightGraphColor, <span class="string">'Fontsize'</span>,FontSize);
2520189     set(h1, <span class="string">'Marker'</span>,<span class="string">'.'</span>);
2530190     set(h2, <span class="string">'Marker'</span>,<span class="string">'.'</span>);
2540191     <span class="comment">%'\fontsize{14}\sigma_y \fontsize{10}BL 3.1 [\mum]'</span>
2550192     set(ax(2), <span class="string">'YColor'</span>, RightGraphColor);
2560193     set(h2, <span class="string">'Color'</span>, RightGraphColor);
2570194     grid on
2580195
2590196     <span class="keyword">if</span> ~strcmpi(XAxisFlag, <span class="string">'Phase'</span>)
2600197         axes(ax(1));
2610198         aa = axis;
2620199         aa(1) = 0;
2630200         aa(2) = L;
2640201         axis(aa);
2650202         axes(ax(2));
2660203         aa = axis;
2670204         aa(1) = 0;
2680205         aa(2) = L;
2690206         axis(aa);
2700207     <span class="keyword">end</span>
2710208
2720209
2730210     subplot(2,1,2);
2740211     plot(BPMyspos, y.Data, <span class="string">'.-'</span>);
2750212     title(sprintf(<span class="string">'%s (%g rms [%s])'</span>, Family2, std(y.Data), y.UnitsString), <span class="string">'Fontsize'</span>,FontSize);
2760213     xlabel(XLabel, <span class="string">'Fontsize'</span>,FontSize);
2770214     ylabel(sprintf(<span class="string">'%s [%s]'</span>,Family2, x.UnitsString), <span class="string">'Color'</span>, LeftGraphColor, <span class="string">'Fontsize'</span>,FontSize);
2780215     set(gca,<span class="string">'YColor'</span>, LeftGraphColor);
2790216     <span class="keyword">if</span> ~strcmpi(XAxisFlag, <span class="string">'Phase'</span>)
2800217         xaxis([0 L]);
2810218     <span class="keyword">end</span>
2820219
2830220     addlabel(1, 0, datestr(clock,0), 7);
2840221     addlabel(0, 0, sprintf(<span class="string">'Equivalent energy change using the RF is  \\DeltaRF = %g [%s]  \\DeltaL = %g [m]'</span>, DeltaRF, RFUnitsString, DeltaL), 7);
2850222
2860223     <span class="keyword">if</span> strcmpi(<a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(<span class="string">'Machine'</span>),<span class="string">'ALS'</span>)
2870224         addlabel(1, .5, <span class="string">'Nominal chicane setting may have been removed from the HCM family'</span>, 7);
2880225     <span class="keyword">end</span>
2890226 <span class="keyword">end</span>
2900227
2910228</pre></div>
292<hr><address>Generated on Mon 21-May-2007 15:29:18 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
293</body>
294</html>
Note: See TracBrowser for help on using the repository browser.