/// <summary> /// Create an struct to hold bin vectors for the amplitude data. /// Average the amplitude value for each bin and store as the magnitude value. /// </summary> /// <param name="ensemble">Ensemble to generate vector values.</param> /// <returns>Vectors for each bin in ensemble.</returns> public static DataSet.EnsembleVelocityVectors GenerateAmplitudeVectors(DataSet.Ensemble ensemble) { RTI.DataSet.VelocityVector[] vv = null; if (ensemble.IsAmplitudeAvail) { // Create Velocity Vector with averaged amplitude data vv = new RTI.DataSet.VelocityVector[ensemble.AmplitudeData.NumElements]; // Create a vector for each bin // Take the average of the amplitude for the bin value for (int bin = 0; bin < ensemble.EarthVelocityData.NumElements; bin++) { // Get the average for each bin float avg = 0; int count = 0; if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_0_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_0_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_1_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_1_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_2_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_2_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_3_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_3_INDEX]; count++; } // Ensure values were found if (count > 0) { avg /= count; } vv[bin] = new VelocityVector(); vv[bin].Magnitude = avg; vv[bin].DirectionXNorth = 0; vv[bin].DirectionYNorth = 0; } } // Create struct to hold the data DataSet.EnsembleVelocityVectors ensVec = new DataSet.EnsembleVelocityVectors(); ensVec.Id = ensemble.EnsembleData.UniqueId; if (vv != null) { ensVec.Vectors = vv; } else { // Put an BAD velocity entry vv = new DataSet.VelocityVector[1]; vv[0].Magnitude = DataSet.Ensemble.BAD_VELOCITY; vv[0].DirectionXNorth = DataSet.Ensemble.BAD_VELOCITY; vv[0].DirectionYNorth = DataSet.Ensemble.BAD_VELOCITY; ensVec.Vectors = vv; } return(ensVec); }
/// <summary> /// Create an struct to hold bin vectors for the amplitude data. /// Average the amplitude value for each bin and store as the magnitude value. /// </summary> /// <param name="ensemble">Ensemble to generate vector values.</param> /// <returns>Vectors for each bin in ensemble.</returns> public static DataSet.EnsembleVelocityVectors GenerateAmplitudeVectors(DataSet.Ensemble ensemble) { RTI.DataSet.VelocityVector[] vv = null; if (ensemble.IsAmplitudeAvail) { // Create Velocity Vector with averaged amplitude data vv = new RTI.DataSet.VelocityVector[ensemble.AmplitudeData.NumElements]; // Create a vector for each bin // Take the average of the amplitude for the bin value for (int bin = 0; bin < ensemble.EarthVelocityData.NumElements; bin++) { // Get the average for each bin float avg = 0; int count = 0; if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_0_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_0_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_1_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_1_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_2_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_2_INDEX]; count++; } if (ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_3_INDEX] != DataSet.Ensemble.BAD_VELOCITY) { avg += ensemble.AmplitudeData.AmplitudeData[bin, DataSet.Ensemble.BEAM_3_INDEX]; count++; } // Ensure values were found if (count > 0) { avg /= count; } vv[bin] = new VelocityVector(); vv[bin].Magnitude = avg; vv[bin].DirectionXNorth = 0; vv[bin].DirectionYNorth = 0; } } // Create struct to hold the data DataSet.EnsembleVelocityVectors ensVec = new DataSet.EnsembleVelocityVectors(); ensVec.Id = ensemble.EnsembleData.UniqueId; if (vv != null) { ensVec.Vectors = vv; } else { // Put an BAD velocity entry vv = new DataSet.VelocityVector[1]; vv[0].Magnitude = DataSet.Ensemble.BAD_VELOCITY; vv[0].DirectionXNorth = DataSet.Ensemble.BAD_VELOCITY; vv[0].DirectionYNorth = DataSet.Ensemble.BAD_VELOCITY; ensVec.Vectors = vv; } return ensVec; }