Programmer Guide/SPU Reference/AVR: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(47 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
Average input <var>X</var> over evaluation cycles.
Average input <var>X</var> over evaluation cycles.
==<code>[SPU SUM <var>X TYP T RS</var> OUT <var>Y</var>]</code>==
==<code>[SPU AVR <var>X TYP T RS</var> OUT <var>Y</var>]</code>==
{|class="einrahmen"
{|class="einrahmen"
!In:
!input !!description !!data type !!value type!!default value
|<var>X</var>||a number, vector or matrix containing the data to be averaged
|-
|-
| ||<var>TYP</var>||a number or string; defines the averaging method
|<var>X</var>||data to be averaged ||number, vector, matrix ||variable
|-
|-
| ||<var>T</var>||averaging parameter (number); depends on method
|<var>TYP</var>||averaging method ||number (int.), string||constant
|-
|-
| ||<var>RS</var>||reset flag (number)
|<var>T</var>||averaging parameter, depends on method ||number or n.c.||<var>TYP</var>=1&rarr;variable<BR><var>TYP</var>&ne;2&rarr;constant
|-
|-
!Out:
|<var>RS</var>||reset flag||number or n.c. ||variable 
|<var>Y</var>||averaged input <var>X</var>; same type as <var>X</var>
|-
!output !!description !!data type !!value type!!comment
|-
|<var>Y</var>||averaged input data ||same type as <var>X</var> ||variable
|}
|}


;Description:
;Description:
The averaging algorithm is defined by the inputs <var>TYP</var> and <var>T</var>. The atom averages the elements <var>X</var>[i,j]<sub>t</sub> over evaluation cycles t (i=row index, j=column index, t=cycle counter) and stores the averaged value in the element <var>Y</var>[i,j]<sub>t</sub>.  
The averaging algorithm is defined by the inputs <var>TYP</var> and <var>T</var>. The atom averages the elements <var>X</var>[''i'',''j'']<sub>''t''</sub> over evaluation cycles t (''i''=row index, ''j''=column index, ''t''=cycle counter) and stores the averaged value in the element <var>Y</var>[''i'',''j'']<sub>''t''</sub>.  


:;invinite average:  
The cycle counter ''t'' is initialized with 0 and incremented by 1 after each evaluation cycle. The cycle counter is reset, if the input <var>RS</var> is set to a value greater than <code>0</code>. The input <var>RS</var> is checked each time the SPU is started.
:;infinite average:
::<var>TYP</var>=<code>0</code> or <code>linear</code>
::<var>TYP</var>=<code>0</code> or <code>linear</code>
::<var>T</var>=<code>0</code>
::<var>T</var>=<code>0</code>
Line 28: Line 32:
\end{cases}
\end{cases}
</math>
</math>
 
:;running average:
*'''running average:''' <var>TYP</var>=<code>0</code> or <code>linear</code>; <var>T</var>&gt;<code>0</code>
::<var>TYP</var>=<code>0</code> or <code>linear</code>
::<var>T</var>&gt;<code>0</code>; <var>T</var> is the (integer) number of averaging cycles
::<math>Y[i,j]_t =
\begin{cases}
\frac{1}{t+1}\sum_{z=0}^t X[i,j]_z & \mbox{if }0\leqslant t < T \\
\frac{1}{T}\sum_{z=0}^{T-1}X[i,j]_{t-z} & \mbox{if }t\geqslant T
\end{cases}
</math>
:;exponential average:
::<var>TYP</var>=<code>1</code> or <code>exponential</code>
::<code>0</code>&lt;<var>T</var>&lt;<code>1</code>; <var>T</var> is the averaging factor
::<math>Y[i,j]_t =
\begin{cases}
X[i,j]_t & \mbox{if }t=0\mbox{ (or }T\mbox{ out of range)}\\
\sqrt{T}.Y[i,j]_{t-1}+(1-\sqrt{T}).X[i,j]_t & \mbox{if }t>0
\end{cases}
</math>
:;minimum:
::<var>TYP</var>=<code>2</code> or <code>minimum</code>
::<var>T</var> is not used
::<math>Y[i,j]_t =
\begin{cases}
X[i,j]_t & \mbox{if }t=0 \\
min(Y[i,j]_{t-1},X[i,j]_t) & \mbox{if }t>0
\end{cases}
</math>
:;maximum:
::<var>TYP</var>=<code>3</code> or <code>maximum</code>
::<var>T</var> is not used
::<math>Y[i,j]_t =  
::<math>Y[i,j]_t =  
\begin{cases}  
\begin{cases}  
X[i,j]_t & \mbox{if }t=0 \\
X[i,j]_t & \mbox{if }t=0 \\
\frac{1}{t+1}(t.Y[i,j]_{t-1}+X[i,j]_t) & \mbox{if }t>0  
max(Y[i,j]_{t-1},X[i,j]_t) & \mbox{if }t>0  
\end{cases}
\end{cases}
</math>
</math>


Since {{STx}} version 4.5.0 the following two new average modes are available, which were used to implement the spectral averaging mode <code>power</code> of the applications [[User Guide/Spectrogram and Parameter Viewer|Viewer2]]  (sectioner) and [[User Guide/Spectrum Viewer|Viewer3]].


:;power:
::<var>TYP</var>=<code>4</code> or <code>power</code>
::<var>T</var> is not used
::* each input element X<sub>i,j</sub> is squared
::* same averaging as for TYP</var>=<code>0</code> is performed
::* square root of each output element Y<sub>i,j</sub> is taken
:;db-power:
::<var>TYP</var>=<code>5</code> or <code>dbpower</code>
::<var>T</var> is not used
::* each input element X<sub>i,j</sub> is converted from dB to squared magnitude (power)
::* same averaging as for TYP</var>=<code>0</code> is performed
::* each output element Y<sub>i,j</sub> is converted to dB
;See also:
;See also:
<[[../#Signal Processing Atoms|SP-atoms]]>
<[[../#Signal Processing Atoms|SP-atoms]]>
<!-- AN, 2.5.2011 -->
<!-- AN, 2.5.2011 -->

Latest revision as of 11:00, 16 October 2018

Average input X over evaluation cycles.

[SPU AVR X TYP T RS OUT Y]

input description data type value type default value
X data to be averaged number, vector, matrix variable
TYP averaging method number (int.), string constant
T averaging parameter, depends on method number or n.c. TYP=1→variable
TYP≠2→constant
RS reset flag number or n.c. variable
output description data type value type comment
Y averaged input data same type as X variable


Description

The averaging algorithm is defined by the inputs TYP and T. The atom averages the elements X[i,j]t over evaluation cycles t (i=row index, j=column index, t=cycle counter) and stores the averaged value in the element Y[i,j]t.

The cycle counter t is initialized with 0 and incremented by 1 after each evaluation cycle. The cycle counter is reset, if the input RS is set to a value greater than 0. The input RS is checked each time the SPU is started.

infinite average
TYP=0 or linear
T=0
{\displaystyle Y[i,j]_{t}={\begin{cases}X[i,j]_{t}&{\mbox{if }}t=0\\{\frac {1}{t+1}}(t.Y[i,j]_{t-1}+X[i,j]_{t})&{\mbox{if }}t>0\end{cases}}}
running average
TYP=0 or linear
T>0; T is the (integer) number of averaging cycles
{\displaystyle Y[i,j]_{t}={\begin{cases}{\frac {1}{t+1}}\sum _{z=0}^{t}X[i,j]_{z}&{\mbox{if }}0\leqslant t<T\\{\frac {1}{T}}\sum _{z=0}^{T-1}X[i,j]_{t-z}&{\mbox{if }}t\geqslant T\end{cases}}}
exponential average
TYP=1 or exponential
0<T<1; T is the averaging factor
{\displaystyle Y[i,j]_{t}={\begin{cases}X[i,j]_{t}&{\mbox{if }}t=0{\mbox{ (or }}T{\mbox{ out of range)}}\\{\sqrt {T}}.Y[i,j]_{t-1}+(1-{\sqrt {T}}).X[i,j]_{t}&{\mbox{if }}t>0\end{cases}}}
minimum
TYP=2 or minimum
T is not used
{\displaystyle Y[i,j]_{t}={\begin{cases}X[i,j]_{t}&{\mbox{if }}t=0\\min(Y[i,j]_{t-1},X[i,j]_{t})&{\mbox{if }}t>0\end{cases}}}
maximum
TYP=3 or maximum
T is not used
{\displaystyle Y[i,j]_{t}={\begin{cases}X[i,j]_{t}&{\mbox{if }}t=0\\max(Y[i,j]_{t-1},X[i,j]_{t})&{\mbox{if }}t>0\end{cases}}}

Since STx version 4.5.0 the following two new average modes are available, which were used to implement the spectral averaging mode power of the applications Viewer2 (sectioner) and Viewer3.

power
TYP=4 or power
T is not used
  • each input element Xi,j is squared
  • same averaging as for TYP=0 is performed
  • square root of each output element Yi,j is taken
db-power
TYP=5 or dbpower
T is not used
  • each input element Xi,j is converted from dB to squared magnitude (power)
  • same averaging as for TYP=0 is performed
  • each output element Yi,j is converted to dB
See also

<SP-atoms>

Navigation menu

Personal tools