source: MML/trunk/mml/doc_html/mml/monrate.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: 9.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 monrate</title>
6  <meta name="keywords" content="monrate">
7  <meta name="description" content="MONRATE - Calculates the control system data rate of a noisy channel">
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; monrate.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>monrate
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>MONRATE - Calculates the control system data rate of a noisy channel</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 [AvgRate, N] = monrate(family, DeviceList, T); </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">MONRATE - Calculates the control system data rate of a noisy channel
31  [AvgRate, N] = monrate(Family, DeviceList, T)
32
33  INPUTS
34  1. Family - Family name ('BPMx', 'HCM', etc.)
35  2. DeviceList - Device list or element list [column vector] {Default: entire family}
36  3. T - Time interval to check sampling rate [seconds]  {Default: 2 seconds}
37
38  OUTPUTS
39  1. AvgRate - Average sample rate over T seconds periods
40  2. N - Number of observed transitions
41
42  NOTES
43  1. This method only works on noisy channels!
44
45  Written by Greg Portmann</pre></div>
46
47<!-- crossreference -->
48<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
49This function calls:
50<ul style="list-style-image:url(../matlabicon.gif)">
51<li><a href="elem2dev.html" class="code" title="function Output = elem2dev(Family, ElementList)">elem2dev</a>   ELEM2DEV - Converts a device list to an element list</li><li><a href="getam.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getam(varargin)">getam</a>     GETAM - Gets monitor channels</li><li><a href="getlist.html" class="code" title="function DeviceList = getlist(varargin)">getlist</a>   GETLIST - Returns Device List for a Family</li></ul>
52This function is called by:
53<ul style="list-style-image:url(../matlabicon.gif)">
54</ul>
55<!-- crossreference -->
56
57
58<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
59<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [AvgRate, N] = monrate(family, DeviceList, T);</a>
600002 <span class="comment">%MONRATE - Calculates the control system data rate of a noisy channel</span>
610003 <span class="comment">%  [AvgRate, N] = monrate(Family, DeviceList, T)</span>
620004 <span class="comment">%</span>
630005 <span class="comment">%  INPUTS</span>
640006 <span class="comment">%  1. Family - Family name ('BPMx', 'HCM', etc.)</span>
650007 <span class="comment">%  2. DeviceList - Device list or element list [column vector] {Default: entire family}</span>
660008 <span class="comment">%  3. T - Time interval to check sampling rate [seconds]  {Default: 2 seconds}</span>
670009 <span class="comment">%</span>
680010 <span class="comment">%  OUTPUTS</span>
690011 <span class="comment">%  1. AvgRate - Average sample rate over T seconds periods</span>
700012 <span class="comment">%  2. N - Number of observed transitions</span>
710013 <span class="comment">%</span>
720014 <span class="comment">%  NOTES</span>
730015 <span class="comment">%  1. This method only works on noisy channels!</span>
740016 <span class="comment">%</span>
750017 <span class="comment">%  Written by Greg Portmann</span>
760018
770019 DisplayFlag = 0;
780020 OneAtATimeFlag = 0;
790021
800022 <span class="keyword">if</span> nargin == 0,
810023     error(<span class="string">'Need atleast one input: family'</span>);
820024 <span class="keyword">end</span> 
830025
840026 <span class="keyword">if</span> nargin &lt; 2
850027     DeviceList = [];
860028 <span class="keyword">end</span>
870029 <span class="keyword">if</span> isempty(DeviceList)
880030     DeviceList = <a href="getlist.html" class="code" title="function DeviceList = getlist(varargin)">getlist</a>(family);
890031 <span class="keyword">end</span>
900032
910033 <span class="keyword">if</span> (size(DeviceList,2) == 1)
920034     DeviceList = <a href="elem2dev.html" class="code" title="function Output = elem2dev(Family, ElementList)">elem2dev</a>(family, DeviceList);
930035 <span class="keyword">end</span>                 
940036
950037 <span class="keyword">if</span> nargin &lt;= 2
960038     T = 2;
970039 <span class="keyword">end</span>
980040
990041 <span class="keyword">if</span> OneAtATimeFlag
1000042     DelT = .005;
1010043 <span class="keyword">else</span>
1020044     <span class="keyword">if</span> size(DeviceList,1) &gt; 50
1030045         DelT = .03;
1040046     <span class="keyword">else</span>
1050047         DelT = .02;
1060048     <span class="keyword">end</span>
1070049 <span class="keyword">end</span>
1080050 <span class="keyword">if</span> length(T) == 1
1090051     tin = 0:DelT:T;
1100052 <span class="keyword">else</span>
1110053     tin = T;
1120054 <span class="keyword">end</span>
1130055
1140056
1150057 disp([<span class="string">'   Checking the data rate for channel or family: '</span>, family]);
1160058 disp([<span class="string">'   Collection data for '</span>,num2str(tin(end)),<span class="string">' seconds at a sample rate of '</span>,num2str(1/mean(diff(tin))),<span class="string">' Hertz.'</span>]);
1170059 pause(0);
1180060 disp([<span class="string">'   Channels must be noisy for this method to work.'</span>]);
1190061 <span class="keyword">if</span> OneAtATimeFlag
1200062     
1210063     <span class="keyword">for</span> i = 1:size(DeviceList,1)
1220064         <span class="comment">% Collect data</span>
1230065         [a, t] = <a href="getam.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getam(varargin)">getam</a>(family, DeviceList(i,:), tin);
1240066         
1250067         adiff = abs(diff(a));
1260068         I = find(adiff &gt; 0);
1270069         
1280070         <span class="keyword">if</span> size(I,2) &lt; 3
1290071             disp(<span class="string">' '</span>);
1300072             disp(<span class="string">'   WARNING: Less than 3 update.  Increase time span or channel not noisy enough.'</span>);
1310073             disp(<span class="string">' '</span>);
1320074         <span class="keyword">end</span>
1330075         
1340076         <span class="keyword">if</span> isempty(I)
1350077             N(i,1) = 0;
1360078             AvgRate(i,1) = 0;
1370079         <span class="keyword">else</span>
1380080             t = t(I);
1390081             tdiff = diff(t);
1400082             
1410083             N(i,1) = size(I,2)-1;
1420084             AvgRate(i,1) = 1/mean(tdiff);
1430085         <span class="keyword">end</span>
1440086         
1450087         Dev=<a href="elem2dev.html" class="code" title="function Output = elem2dev(Family, ElementList)">elem2dev</a>(family,elem(i));
1460088         fprintf(<span class="string">'   %s(%2d,%2d), Sample Rate=%5.2f Hz,  Number of Samples=%d, Number of New Data Points=%d\n'</span>, family, Dev(1), Dev(2), AvgRate(i,1), length(t),N(i,1));
1470089     <span class="keyword">end</span>
1480090 <span class="keyword">else</span>
1490091     <span class="comment">% Collect data using EPICs</span>
1500092     <a href="getam.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getam(varargin)">getam</a>(family, DeviceList);  <span class="comment">% just to connect to channels</span>
1510093     [a, t, DataTime] = <a href="getam.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getam(varargin)">getam</a>(family, DeviceList, tin);
1520094     
1530095     <span class="keyword">for</span> i = 1:size(DeviceList,1)
1540096         adiff = abs(diff(a(i,:)));
1550097         I = find(adiff&gt;0);
1560098         
1570099         <span class="keyword">if</span> size(I,2) &lt; 3
1580100             fprintf(<span class="string">'\n    WARNING: %s(%d,%d) updated %d times in %.2f seconds.  Increase time span or channel is not noisy enough.\n\n'</span>, family, DeviceList(i,:), size(I,2), tin(end));
1590101         <span class="keyword">end</span>
1600102         
1610103         <span class="keyword">if</span> isempty(I)
1620104             N(i,1) = 0;
1630105             AvgRate(i,1) = 0;
1640106         <span class="keyword">else</span>
1650107             t1 = t(I);
1660108             tdiff = diff(t1);
1670109             
1680110             N(i,1) = size(I,2)-1;
1690111             AvgRate(i,1) = 1/mean(tdiff);
1700112         <span class="keyword">end</span>
1710113         
1720114         Dev = DeviceList(i,:);
1730115         <span class="keyword">if</span> DisplayFlag
1740116             fprintf(<span class="string">'   %s(%2d,%2d), Sample Rate=%5.2f Hz,  Number of Samples=%d, Number of New Data Points=%d\n'</span>, family, Dev, AvgRate(i,1), length(t), N(i,1));
1750117         <span class="keyword">end</span>
1760118     <span class="keyword">end</span>
1770119 <span class="keyword">end</span></pre></div>
178<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>
179</body>
180</html>
Note: See TracBrowser for help on using the repository browser.