Im Rahmen meiner Diplomarbeit, muss ich eine TDEV Auswertung nach ITU-T 
G.810 II.3 machen.
Um diese Auswertung durchzuführen, habe ich ein kleines C++ Programm 
geschrieben. Im Anhang befindet sich die Formel, zur Berechnung des 
TDEV.
Leider bin ich mir bei den Ergebnissen für größere n relativ unsicher, 
ob sie richtig sind. Könnt ihr mal die Formel mit meinen C++ Code 
vergleichen und sagen, ob ich noch einen Fehler im Code habe?
In TIE[] sind die Messpunkte enthalten.
size gibt die Größe des Arrays TIE, in der Funktion berechnenTDEV der 
Klasse auswertung, an. Size kann in manchen Fällen eine Größen von 
200.000 annehmen.
C++code:
1  | double auswertung::berechnenTDEV(unsigned int n){
 | 
2  |   double *zwischenspeicher1 = new double [n];
  | 
3  |   double *zwischenspeicher2 = new double [size-3*n+1];
  | 
4  |   for(unsigned int j = 0;j<=(size-3*n);j++){
 | 
5  |     for(unsigned int i=j;i<=(n+j-1);i++){
 | 
6  |       zwischenspeicher1[i-j]=TIE[i+2*n]-2*TIE[i+n]+TIE[i];
  | 
7  |     }
  | 
8  |     double y = array_addieren(zwischenspeicher1,n);
  | 
9  |     y = y*y;
  | 
10  |     zwischenspeicher2[j] = y;
  | 
11  |   }
  | 
12  |   double z = array_addieren(zwischenspeicher2,size-3*n+1);
  | 
13  |   z= z / (6*n*n*(size-3*n+2));
  | 
14  |   return(sqrt(z));
  | 
15  | }
  | 
16  | 
  | 
17  | //Erzeugt die Summe eines Arrays
  | 
18  | double array_addieren(double *array1, int size){
 | 
19  |   while(1){
 | 
20  |     if(size == 1){
 | 
21  |       break;
  | 
22  |     }
  | 
23  |     for(int i = 0;i<size/2;i++){
 | 
24  |       array1[i]=array1[i*2]+array1[i*2+1];
  | 
25  |     }
  | 
26  |     if(size%2){
 | 
27  |       array1[(size/2)-1]=array1[(size/2)-1]+array1[size-1];
  | 
28  |     }
  | 
29  |     size = size/2;
  | 
30  |   }
  | 
31  |   return(array1[0]);
  | 
32  | }
  |