source: MML/trunk/machine/SOLEIL/doc_html/machine/Soleil/common/measrate.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: 8.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 measrate</title>
6  <meta name="keywords" content="measrate">
7  <meta name="description" content="MEASRATE - noise on channels">
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="#">machine</a> &gt; <a href="#">Soleil</a> &gt; <a href="index.html">common</a> &gt; measrate.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 machine/Soleil/common&nbsp;<img alt=">" border="0" src="../../../right.png"></a></td></tr></table>-->
19
20<h1>measrate
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>MEASRATE - noise on channels</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] = measrate(family, elem, 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">MEASRATE - noise on channels
31[AvgRate, N] = measrate(Family, List, T);
32
33 INPUTS
34 1. Family = Family name ('BPMx', 'HCOR', etc.)
35 2. List   = Device list or element list [column vector] {default, entire family}
36 3. T      = Time interval to check sampling rate [seconds]
37
38 OUTPUTS
39 1. AvgRate = Average sample rate over T seconds perios
40 2. N       = Number of observed transitions
41
42 NOTES
43 1.This method only works on noisy channels!</pre></div>
44
45<!-- crossreference -->
46<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2>
47This function calls:
48<ul style="list-style-image:url(../../../matlabicon.gif)">
49</ul>
50This function is called by:
51<ul style="list-style-image:url(../../../matlabicon.gif)">
52<li><a href="listfonction.html" class="code" title="">listfonction</a>  </li></ul>
53<!-- crossreference -->
54
55
56<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2>
57<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [AvgRate, N] = measrate(family, elem, T);</a>
580002 <span class="comment">%MEASRATE - noise on channels</span>
590003 <span class="comment">%[AvgRate, N] = measrate(Family, List, T);</span>
600004 <span class="comment">%</span>
610005 <span class="comment">% INPUTS</span>
620006 <span class="comment">% 1. Family = Family name ('BPMx', 'HCOR', etc.)</span>
630007 <span class="comment">% 2. List   = Device list or element list [column vector] {default, entire family}</span>
640008 <span class="comment">% 3. T      = Time interval to check sampling rate [seconds]</span>
650009 <span class="comment">%</span>
660010 <span class="comment">% OUTPUTS</span>
670011 <span class="comment">% 1. AvgRate = Average sample rate over T seconds perios</span>
680012 <span class="comment">% 2. N       = Number of observed transitions</span>
690013 <span class="comment">%</span>
700014 <span class="comment">% NOTES</span>
710015 <span class="comment">% 1.This method only works on noisy channels!</span>
720016
730017 <span class="comment">%</span>
740018 <span class="comment">% Written by Gregory J. Portmann, ALS</span>
750019
760020 <span class="keyword">if</span> nargin == 0,
770021     error(<span class="string">'Need atleast one input: family'</span>);
780022 <span class="keyword">end</span> 
790023
800024 <span class="keyword">if</span> nargin == 1,
810025     elem = getlist(family);
820026 <span class="keyword">end</span>
830027
840028 <span class="keyword">if</span> isempty(elem)
850029     elem = getlist(family);
860030 <span class="keyword">end</span>
870031
880032
890033 <span class="keyword">if</span> (size(elem,2) == 2)
900034     elem = dev2elem(family, elem);
910035 <span class="keyword">end</span>                 
920036
930037 <span class="keyword">if</span> nargin &lt;= 2,
940038     T = 2;
950039 <span class="keyword">end</span>
960040
970041 OneAtATimeFlag = 0;
980042
990043 <span class="keyword">if</span> OneAtATimeFlag
1000044     DelT = .005;
1010045 <span class="keyword">else</span>
1020046     <span class="keyword">if</span> length(elem)&gt;50
1030047         DelT = .03;
1040048     <span class="keyword">else</span>
1050049         DelT = .02;
1060050     <span class="keyword">end</span>
1070051 <span class="keyword">end</span>
1080052 <span class="keyword">if</span> length(T) == 1
1090053     tin = 0:DelT:T;
1100054 <span class="keyword">else</span>
1110055     tin = T;
1120056 <span class="keyword">end</span>
1130057
1140058
1150059 disp([<span class="string">'  Checking the data rate for channel or family: '</span>, family]);
1160060 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>]); pause(0);
1170061 disp([<span class="string">'  Channels must be noisy for this method to work.'</span>]);
1180062 <span class="keyword">if</span> OneAtATimeFlag
1190063     
1200064     <span class="keyword">for</span> i = 1:size(elem,1)
1210065         <span class="comment">% Collect data</span>
1220066         [a, t] = getam(family, elem(i,1), 1, tin);
1230067         
1240068         adiff = abs(diff(a));
1250069         I = find(adiff&gt;0);
1260070         
1270071         <span class="keyword">if</span> size(I,2) &lt; 3
1280072             disp(<span class="string">' '</span>); disp(<span class="string">'  WARNING: Less than 3 update.  Increase time span or channel not noisy enough.'</span>); disp(<span class="string">' '</span>);
1290073         <span class="keyword">end</span>
1300074         
1310075         <span class="keyword">if</span> isempty(I)
1320076             N(i,1) = 0;
1330077             AvgRate(i,1) = 0;
1340078         <span class="keyword">else</span>
1350079             t = t(I);
1360080             tdiff = diff(t);
1370081             
1380082             N(i,1) = size(I,2)-1;
1390083             AvgRate(i,1) = 1/mean(tdiff);
1400084         <span class="keyword">end</span>
1410085         
1420086         Dev=elem2dev(family,elem(i));
1430087         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));
1440088     <span class="keyword">end</span>
1450089 <span class="keyword">else</span>
1460090     <span class="comment">% Collect data using EPICs</span>
1470091     getam(family);  <span class="comment">% just to connect to channels</span>
1480092     [a, t] = getam(family, [], 1, tin);
1490093     
1500094     <span class="comment">%figure(3)</span>
1510095     <span class="comment">%plot(tin,t)</span>
1520096     
1530097     <span class="keyword">for</span> i = 1:size(elem,1)
1540098         adiff = abs(diff(a(i,:)));
1550099         I = find(adiff&gt;0);
1560100         
1570101         <span class="keyword">if</span> size(I,2) &lt; 3
1580102             disp(<span class="string">' '</span>); disp([<span class="string">'  WARNING: '</span>,family,<span class="string">'('</span>,num2str(i),<span class="string">') less than 3 update.  Increase time span or channel not noisy enough.'</span>]); disp(<span class="string">' '</span>);
1590103         <span class="keyword">end</span>
1600104         
1610105         <span class="keyword">if</span> isempty(I)
1620106             N(i,1) = 0;
1630107             AvgRate(i,1) = 0;
1640108         <span class="keyword">else</span>
1650109             t1 = t(I);
1660110             tdiff = diff(t1);
1670111             
1680112             N(i,1) = size(I,2)-1;
1690113             AvgRate(i,1) = 1/mean(tdiff);
1700114         <span class="keyword">end</span>
1710115         
1720116         Dev = elem2dev(family,elem(i));
1730117         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));
1740118     <span class="keyword">end</span>   
1750119 <span class="keyword">end</span></pre></div>
176<hr><address>Generated on Mon 21-May-2007 15:35:27 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
177</body>
178</html>
Note: See TracBrowser for help on using the repository browser.