Exemple #1
0
        /// <summary>
        /// 直接取整。设置属性。
        /// </summary>
        /// <param name="length">数值</param>
        public void SetAmbiguity(double length)
        {
            //宽巷模糊度
            long NaMinusMb = (long)(length / WideFactor / WidePhase.Frequence.WaveLength);

            this.WidePhase.Ambiguity = NaMinusMb;
            //窄巷模糊度
            double remained = length - WideFactor * this.WidePhase.PhaseRange;
            long   ambiA    = (long)(remained / NarrowFactor / NarrowPhase.Frequence.WaveLength);

            this.NarrowPhase.Ambiguity = ambiA;

            long ambiB = ambiA - NaMinusMb;

            //返回验证
            var facs = PhaseCombinationBuilder.GetIonoFreePhaseCycleCombFactors(FrequenceA, FrequenceB);

            //double remain2 = facs[0] * this.WidePhase.Ambiguity * FrequenceA.WaveLength + facs[1] * this.WidePhase.Ambiguity * FrequenceB.WaveLength;
            //int ambi2 = (int)(remain2 / FrequenceB.WaveLength);

            //验证
            double distance = WideFactor * this.WidePhase.PhaseRange + NarrowFactor * this.NarrowPhase.PhaseRange;
            //   double differ2 = ambi2 - this.NarrowPhase.Ambiguity;
            double differ = length - distance;
        }
Exemple #2
0
        /// <summary>
        /// 构造函数。采用两个频率初始化。
        /// </summary>
        /// <param name="A">频率A</param>
        /// <param name="B">频率B</param>
        public IonoFreeCombination(PhaseRangeObservation A = null, PhaseRangeObservation B = null)
        {
            PhaseCombination combination = PhaseCombinationBuilder.GetIonoFreeRangeCombination(A.Value, B.Value, A.Frequence, B.Frequence);

            this.Value     = combination.Value;
            this.Frequence = combination.Frequence;

            double f1 = A.Frequence.Value;
            double f2 = B.Frequence.Value;

            this.WideFactor   = (f1 * f2) / (f1 * f1 - f2 * f2);
            this.NarrowFactor = f1 / (f1 + f2);

            Frequence wideFrequence = new Gnsser.Frequence("WidePhase", A.Frequence.Value - B.Frequence.Value);

            this.NarrowPhase = new PhaseValue(0, A.Frequence);
            this.WidePhase   = new PhaseValue(0, wideFrequence);

            this.FrequenceA = A.Frequence;
            this.FrequenceB = B.Frequence;
        }