Newer
Older
PhaseMeasure / DataProcessAlgorithm.cpp
TAN YUE on 29 Jan 2022 1 KB 20220129 图表功能初步
#include "DataProcessAlgorithm.h"
#include <math.h>

extern QVector<QVector<QStringList>> phaseVector;

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++)
    {
        double vi2 = phaseVector[index][i+2*d].at(1).toDouble();
        double vi1 = phaseVector[index][i+d].at(1).toDouble();
        double vi = phaseVector[index][i].at(1).toDouble();
        y[i] = pow(vi2 - 2 * vi1 + vi, 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];
}