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."); }
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"); }
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."); }
/// <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); }
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."); }
/// <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)); } } } }