#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]; }