Esempio n. 1
0
        public void DecodePd0Test()
        {
            Pd0Correlation pd0Corr = new Pd0Correlation(30);

            pd0Corr.Correlation[0, 0] = 87;
            pd0Corr.Correlation[0, 1] = 59;
            pd0Corr.Correlation[0, 2] = 143;
            pd0Corr.Correlation[0, 3] = 115;
            pd0Corr.Correlation[1, 0] = 199;
            pd0Corr.Correlation[1, 1] = 171;
            pd0Corr.Correlation[1, 2] = 232;
            pd0Corr.Correlation[1, 3] = 227;


            DataSet.CorrelationDataSet corr = new DataSet.CorrelationDataSet(30);

            corr.DecodePd0Ensemble(pd0Corr, 2);

            Assert.AreEqual(0.56f, corr.CorrelationData[0, 0], 0.1f, "Correlation Bin 0, Beam 0 is incorrect.");
            Assert.AreEqual(0.45f, corr.CorrelationData[0, 1], 0.1f, "Correlation Bin 0, Beam 1 is incorrect.");
            Assert.AreEqual(0.23f, corr.CorrelationData[0, 2], 0.1f, "Correlation Bin 0, Beam 2 is incorrect.");
            Assert.AreEqual(0.34f, corr.CorrelationData[0, 3], 0.1f, "Correlation Bin 0, Beam 3 is incorrect.");
            Assert.AreEqual(0.91f, corr.CorrelationData[1, 0], 0.1f, "Correlation Bin 1, Beam 0 is incorrect.");
            Assert.AreEqual(0.89f, corr.CorrelationData[1, 1], 0.1f, "Correlation Bin 1, Beam 1 is incorrect.");
            Assert.AreEqual(0.67f, corr.CorrelationData[1, 2], 0.1f, "Correlation Bin 1, Beam 2 is incorrect.");
            Assert.AreEqual(0.78f, corr.CorrelationData[1, 3], 0.1f, "Correlation Bin 1, Beam 3 is incorrect.");
        }
Esempio n. 2
0
        public void TestTiming()
        {
            // Generate an Ensemble
            DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30);

            Stopwatch watch = new Stopwatch();

            // Test Serialize()
            watch = new Stopwatch();
            watch.Start();
            for (int x = 0; x < 1000; x++)
            {
                string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.CorrelationData);
            }
            watch.Stop();
            long resultSerialize = watch.ElapsedMilliseconds;

            // Test Deserialize()
            string encodedd = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.CorrelationData);

            watch = new Stopwatch();
            watch.Start();
            for (int x = 0; x < 1000; x++)
            {
                DataSet.CorrelationDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.CorrelationDataSet>(encodedd);
            }
            watch.Stop();
            long resultDeserialize = watch.ElapsedMilliseconds;

            Debug.WriteLine(String.Format("Serialize:{0}  Deserialize:{1}", resultSerialize, resultDeserialize));

            Debug.WriteLine("Complete");
        }
Esempio n. 3
0
        public void DecodePd0Test()
        {
            Pd0Correlation pd0Corr = new Pd0Correlation(30);

            pd0Corr.Correlation[0, 0] = 87;
            pd0Corr.Correlation[0, 1] = 59;
            pd0Corr.Correlation[0, 2] = 143;
            pd0Corr.Correlation[0, 3] = 115;
            pd0Corr.Correlation[1, 0] = 199;
            pd0Corr.Correlation[1, 1] = 171;
            pd0Corr.Correlation[1, 2] = 232;
            pd0Corr.Correlation[1, 3] = 227;

            DataSet.CorrelationDataSet corr = new DataSet.CorrelationDataSet(30);

            corr.DecodePd0Ensemble(pd0Corr, 2);

            Assert.AreEqual(0.56f, corr.CorrelationData[0, 0], 0.1f, "Correlation Bin 0, Beam 0 is incorrect.");
            Assert.AreEqual(0.45f, corr.CorrelationData[0, 1], 0.1f, "Correlation Bin 0, Beam 1 is incorrect.");
            Assert.AreEqual(0.23f, corr.CorrelationData[0, 2], 0.1f, "Correlation Bin 0, Beam 2 is incorrect.");
            Assert.AreEqual(0.34f, corr.CorrelationData[0, 3], 0.1f, "Correlation Bin 0, Beam 3 is incorrect.");
            Assert.AreEqual(0.91f, corr.CorrelationData[1, 0], 0.1f, "Correlation Bin 1, Beam 0 is incorrect.");
            Assert.AreEqual(0.89f, corr.CorrelationData[1, 1], 0.1f, "Correlation Bin 1, Beam 1 is incorrect.");
            Assert.AreEqual(0.67f, corr.CorrelationData[1, 2], 0.1f, "Correlation Bin 1, Beam 2 is incorrect.");
            Assert.AreEqual(0.78f, corr.CorrelationData[1, 3], 0.1f, "Correlation Bin 1, Beam 3 is incorrect.");
        }
Esempio n. 4
0
        /// <summary>
        /// Initialize the object.
        /// </summary>
        /// <param name="corr">Correlation data set.</param>
        /// <param name="numCodeRepeats">Number of code repeats.  Found in SystemSetupDataSet.</param>
        public Pd0Correlation(DataSet.CorrelationDataSet corr, float numCodeRepeats)
            : base(ID_LSB, ID_MSB, Pd0ID.Pd0Types.Correlation)
        {
            NumDepthCells = corr.NumElements;
            NumBeams      = corr.ElementsMultiplier;

            DecodeRtiEnsemble(corr, numCodeRepeats);
        }
Esempio n. 5
0
        public void TestJson()
        {
            // Generate an Ensemble
            DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30);

            // Modify the data
            ensemble.CorrelationData.CorrelationData[0, DataSet.Ensemble.BEAM_0_INDEX] = 1.2f;
            ensemble.CorrelationData.CorrelationData[0, DataSet.Ensemble.BEAM_1_INDEX] = 2.3f;
            ensemble.CorrelationData.CorrelationData[0, DataSet.Ensemble.BEAM_2_INDEX] = 3.4f;
            ensemble.CorrelationData.CorrelationData[0, DataSet.Ensemble.BEAM_3_INDEX] = 4.5f;

            ensemble.CorrelationData.CorrelationData[3, DataSet.Ensemble.BEAM_0_INDEX] = 2.2f;
            ensemble.CorrelationData.CorrelationData[3, DataSet.Ensemble.BEAM_1_INDEX] = 3.3f;
            ensemble.CorrelationData.CorrelationData[3, DataSet.Ensemble.BEAM_2_INDEX] = 4.4f;
            ensemble.CorrelationData.CorrelationData[3, DataSet.Ensemble.BEAM_3_INDEX] = 5.5f;

            ensemble.CorrelationData.CorrelationData[5, DataSet.Ensemble.BEAM_0_INDEX] = 3.2f;
            ensemble.CorrelationData.CorrelationData[5, DataSet.Ensemble.BEAM_1_INDEX] = 4.3f;
            ensemble.CorrelationData.CorrelationData[5, DataSet.Ensemble.BEAM_2_INDEX] = 5.4f;
            ensemble.CorrelationData.CorrelationData[5, DataSet.Ensemble.BEAM_3_INDEX] = 6.5f;

            string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.CorrelationData);                                      // Serialize object to JSON

            DataSet.CorrelationDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.CorrelationDataSet>(encoded);    // Deserialize the JSON

            // Verify the values are the same
            Assert.AreEqual(1.2f, decoded.CorrelationData[0, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 0 0 is incorrect.");
            Assert.AreEqual(2.3f, decoded.CorrelationData[0, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 0 1 is incorrect.");
            Assert.AreEqual(3.4f, decoded.CorrelationData[0, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 0 2 is incorrect.");
            Assert.AreEqual(4.5f, decoded.CorrelationData[0, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 0 3 is incorrect.");

            Assert.AreEqual(2.2f, decoded.CorrelationData[3, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 3 0 is incorrect.");
            Assert.AreEqual(3.3f, decoded.CorrelationData[3, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 3 1 is incorrect.");
            Assert.AreEqual(4.4f, decoded.CorrelationData[3, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 3 2 is incorrect.");
            Assert.AreEqual(5.5f, decoded.CorrelationData[3, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 3 3 is incorrect.");

            Assert.AreEqual(3.2f, decoded.CorrelationData[5, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 5 0 is incorrect.");
            Assert.AreEqual(4.3f, decoded.CorrelationData[5, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 5 1 is incorrect.");
            Assert.AreEqual(5.4f, decoded.CorrelationData[5, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 5 2 is incorrect.");
            Assert.AreEqual(6.5f, decoded.CorrelationData[5, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 5 3 is incorrect.");
        }
Esempio n. 6
0
        /// <summary>
        /// Convert the RTI Correlation data set to the PD0 Correlation data type.
        /// </summary>
        /// <param name="corr">RTI Correlation data set.</param>
        /// <param name="numRepeats">Number of code repeats.  Found in SystemSetupDataSet.</param>
        public void DecodeRtiEnsemble(DataSet.CorrelationDataSet corr, float numRepeats)
        {
            if (corr.CorrelationData != null)
            {
                //Correlation = new byte[corr.CorrelationData.GetLength(0), corr.CorrelationData.GetLength(1)];
                //Correlation = new byte[corr.CorrelationData.GetLength(0), NumBeams];
                Correlation = new byte[corr.NumElements, corr.ElementsMultiplier];

                // The value has to be converted from percentage to 0-255
                // Scale 0%-100% to 0-255
                // 255 = 100%
                // 0   =   0%
                // 50% = 0.50 * 255 = 127.5 = 255/2

                for (int bin = 0; bin < corr.CorrelationData.GetLength(0); bin++)
                {
                    // 4 Beam system
                    if (corr.CorrelationData.GetLength(1) >= NumBeams)
                    {
                        for (int beam = 0; beam < corr.CorrelationData.GetLength(1); beam++)
                        {
                            // beam order 3,2,0,1
                            int newBeam = 0;
                            switch (beam)
                            {
                            case 0:
                                newBeam = 3;
                                break;

                            case 1:
                                newBeam = 2;
                                break;

                            case 2:
                                newBeam = 0;
                                break;

                            case 3:
                                newBeam = 1;
                                break;
                            }

                            // Check if numRepeats = 0
                            if (numRepeats == 0)
                            {
                                numRepeats = 1.0f;
                            }

                            float n = ((numRepeats - 1.0f) / numRepeats);

                            // Check if n = 0
                            if (n == 0)
                            {
                                n = 1.0f;
                            }

                            float val = corr.CorrelationData[bin, newBeam] * 128.0f;
                            Correlation[bin, beam] = (byte)(Math.Round(val / n));

                            //Correlation[bin, beam] = (byte)(Math.Round(corr.CorrelationData[bin, newBeam] * 255));
                        }
                    }
                    // Vertical beam
                    else if (corr.CorrelationData.GetLength(1) == 1)
                    {
                        Correlation[bin, 0] = (byte)(Math.Round(corr.CorrelationData[bin, 0] * 255));
                    }
                }
            }
        }