This site is best viewed in a browser that conforms to web standards.
Die meisten Implementierungen verwenden die Konstruktion eines triangulären Fensters über der Zeitreihe, wobei ganzzahlige Faktoren verwendet werden.

Eine effektiver zu berechnende und genauere Variante ist die Konstruktion eines Bartlett-Fensters über der Datenreihe, das ebenfalls eine trianguläre Form aufweist, jedoch auf Fliesskomma-Artithmetik basiert.



inline double W_BARTLETT(double n, double k, double d = 1.0)
{
return (n == 0) ? 0 : (d * (1 - fabs((k - 0.5 * n) / (0.5 * n))));
}
BOOL ivorix_tma (
vector<double>& ivec, // input vector
vector<double>& ovec, // output vector
unsigned long span) // time period or span of embedding
{
ULONG x = 0;
ULONG y = 0;
ULONG p = 0;
ULONG e = ivec.size();
double sum = 0;
double div = 0;
if ( span == 0 || span >= e )
return false;
ovec.resize(ivec.size());
ovec[0] = ivec[0];
for ( x = 1; x < e; x++ )
{
sum = 0;
p = min(x, span);
if ( p <= span )
{
div = 0;
for ( y = 1; y <= p; y++ )
div += W_BARTLETT(p+1, y, p);
}
for ( y = 1; y <= p; y++ )
sum += ivec[x-y+1] * W_BARTLETT(p+1, y, p);
ovec[x] = sum / div;
}
return true;
}