Newer
Older
PhaseMeasure / DataProcessAlgorithm.cpp
#include "DataProcessAlgorithm.h"
#include <math.h>

DataProcessAlgorithm::DataProcessAlgorithm(QObject *parent) : QObject(parent)
{

}

double DataProcessAlgorithm::allan(int index, int d, int aN, int start)
{
    int i = start - 1;      // 从start处开始取数进行计算,避免开始采集时的数据不稳定带来的影响
    double tau0 = 1;    //tau0是基本采样间隔,由计数器或比相仪的最小采样间隔决定,最小为1s
    double sum = 0.0;
    double allan[2] = {0.0};
    double *y = new double[aN];
    double tau_2 = pow(d * tau0, 2);				//pow是计算x的y次幂
    for (; i < aN - 2 * d; i++)
    {
        y[i] = pow(phaseVector[index][i+2*d] - 2 * phaseVector[index][i+d] + phaseVector[index][i], 2);
        sum=sum+y[i];
    }
    allan[0] = sum/(2*tau_2*(aN-2*d));       //delta的平方
    allan[1] = sqrt(sum/(2*tau_2*(aN-2*d))); //delta

    return allan[1];
}