예제 #1
0
        private void ShowFrequence()
        {
            RinexSatFrequency satelliteFrequency = GetSatFrequence();

            if (satelliteFrequency == null)
            {
                return;
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("当前选中了: " + satelliteFrequency.ToString());
            if (satelliteFrequency.GetFrequence() != null)
            {
                sb.AppendLine("频率: " + satelliteFrequency.GetFrequence().ToString());
            }
            log.Info(sb.ToString());
        }
예제 #2
0
        private void button_solve_Click(object sender, EventArgs e)
        {
            RinexSatFrequency satFreq = GetSatFrequence();
            int    n             = namedIntControl_epochCount.GetValue();
            double deltaL        = satFreq.GetFrequence().WaveLength * 0.01;// 0.0019;
            double deltaP        = this.namedFloatControl_deltaOfP.GetValue();
            double deltaC        = namedFloatControl_deltaOfC.GetValue();
            double deltaLSquared = deltaL * deltaL;
            double deltaPSquared = deltaP * deltaP;
            double deltaCSquared = deltaC * deltaC;
            int    i             = n;
            double deltaPs       = GetDeltaOfSmoothedRange(i, deltaP, deltaL);
            double deltaCs       = GetDeltaOfSmoothedRange(i, deltaC, deltaL);
            double step          = this.namedFloatControl_step.GetValue();
            double stepWeight    = (i - 1) * step;

            if (i >= 100)
            {
                stepWeight = 0.01;
            }

            double normalWeight = 1.0 / i;
            double deltaStepP   = GetDeltaOfWeightedSmoothRange(i, stepWeight, deltaP, deltaL);
            double deltaStepC   = GetDeltaOfWeightedSmoothRange(i, stepWeight, deltaC, deltaL);

            double deltaWeightedPs      = GetDeltaOfWeightedSmoothRange(i, normalWeight, deltaP, deltaL);
            double deltaWeightedCs      = GetDeltaOfWeightedSmoothRange(i, normalWeight, deltaC, deltaL);
            double timesOfP             = deltaP / deltaPs;
            double timesOfC             = deltaC / deltaCs;
            double timesOfWeightedP     = deltaP / deltaWeightedPs;
            double timesOfWeightedC     = deltaC / deltaWeightedCs;
            double timesOfStepWeightedP = deltaStepP / deltaWeightedPs;
            double timesOfStepWeightedC = deltaStepC / deltaWeightedCs;

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("deltaPs:\t" + deltaPs);
            sb.AppendLine("deltaCs:\t" + deltaCs);
            sb.AppendLine("deltaWeightedPs:\t" + deltaWeightedPs);
            sb.AppendLine("deltaWeightedCs:\t" + deltaWeightedCs);
            sb.AppendLine("deltaStepP:\t" + deltaStepP);
            sb.AppendLine("deltaStepC:\t" + deltaStepC);
            sb.AppendLine("timesOfP:\t" + timesOfP);
            sb.AppendLine("timesOfC:\t" + timesOfC);
            sb.AppendLine("timesOfWeightedP:\t" + timesOfWeightedP);
            sb.AppendLine("timesOfWeightedC:\t" + timesOfWeightedC);
            sb.AppendLine("timesOfStepWeightedP:\t" + timesOfStepWeightedP);
            sb.AppendLine("timesOfStepWeightedC:\t" + timesOfStepWeightedC);


            this.richTextBoxControl1.Text = sb.ToString();
        }
예제 #3
0
        private void button_multiDelta_Click(object sender, EventArgs e)
        {
            RinexSatFrequency satFreq = GetSatFrequence();

            ObjectTableStorage table = new ObjectTableStorage();

            bool   isShowCA = checkBox_IsShowCA.Checked;
            double step     = this.namedFloatControl_step.GetValue();
            double n        = namedIntControl_epochCount.GetValue();
            var    deltaL   = satFreq.GetFrequence().WaveLength * 0.01;// 0.0019;
            double deltaP   = this.namedFloatControl_deltaOfP.GetValue();
            double deltaC   = namedFloatControl_deltaOfC.GetValue();

            var    deltaLSquared = deltaL * deltaL;
            var    deltaPSquared = deltaP * deltaP;
            var    deltaCSquared = deltaC * deltaC;
            double stepCount     = 1 / step;

            for (int i = 1; i < n; i++)
            {
                //原始
                double deltaPs = GetDeltaOfSmoothedRange(i, deltaP, deltaL);
                double deltaCs = GetDeltaOfSmoothedRange(i, deltaC, deltaL);
                //加权平均
                double normalWeight    = 1.0 / i;
                double deltaWeightedPs = GetDeltaOfWeightedSmoothRange(i, normalWeight, deltaP, deltaL);
                double deltaWeightedCs = GetDeltaOfWeightedSmoothRange(i, normalWeight, deltaC, deltaL);
                //步长加权
                double stepWeight = 1 - (i - 1) * step; // stepCount;// (i - 1) * step;
                if (i >= stepCount)
                {
                    stepWeight = step;
                }
                double deltaStepP2 = GetDeltaOfStepWeightedSmoothRange(i, step, deltaP, deltaL);
                double deltaStepP  = GetDeltaOfWeightedSmoothRange(i, stepWeight, deltaP, deltaL);
                double deltaStepC  = GetDeltaOfWeightedSmoothRange(i, stepWeight, deltaC, deltaL);


                double timesOfP         = deltaP / deltaPs;
                double timesOfC         = deltaC / deltaCs;
                double timesOfWeightedP = deltaP / deltaWeightedPs;
                double timesOfWeightedC = deltaC / deltaWeightedCs;
                if (i < 1000)
                {
                    table.NewRow();
                    table.AddItem("Epoch", i);
                    table.AddItem("σRawSP", deltaPs);
                    if (isShowCA)
                    {
                        table.AddItem("σRawSC", deltaCs);
                    }
                    table.AddItem("σWSP", deltaWeightedPs);
                    if (isShowCA)
                    {
                        table.AddItem("σWSC", deltaWeightedCs);
                    }
                    table.AddItem("σStepSP", deltaStepP);
                    table.AddItem("σStepSP2", deltaStepP2);
                    if (isShowCA)
                    {
                        table.AddItem("σStepSC", deltaStepC);
                    }
                }
                // 精度提高倍数
                else if (
                    //i <= 10
                    //         || (i > 10 && i <= 100 && i % 10 == 0)
                    //          || (i > 100 && i <= 1000 && i % 100 == 0)
                    //            ||
                    (i > 1000 && i % 1000 == 0) ||
                    (i > 10000 && i % 10000 == 0) ||
                    (i > 100000 && i % 100000 == 0))
                {
                    table.NewRow();
                    table.AddItem("Epoch", i);
                    table.AddItem("σRawSP", deltaPs);
                    if (isShowCA)
                    {
                        table.AddItem("σRawSC", deltaCs);
                    }
                    table.AddItem("σWSP", deltaWeightedPs);
                    if (isShowCA)
                    {
                        table.AddItem("σWSC", deltaWeightedCs);
                    }
                    table.AddItem("σStepSP", deltaStepP);
                    if (isShowCA)
                    {
                        table.AddItem("σStepSC", deltaStepP);
                    }
                }
            }
            table.IndexColName = "Epoch";
            this.objectTableControl1.DataBind(table);
        }