/// <summary>Finds the <see cref="NetworkParametersMatrix"/> at or nearest to <paramref name="frequency"/>.</summary> /// <param name="frequency">The frequency to locate in Hz.</param> /// <returns>The <see cref="NetworkParametersMatrix"/> at or nearest to <paramref name="frequency"/>.</returns> public TMatrix Nearest(double frequency) { bool predecessorFound = frequencies.TryWeakPredecessor(frequency, out double predecessor); bool successorFound = frequencies.TryWeakSuccessor(frequency, out double successor); if (predecessorFound && successorFound) { double preDelta = Math.Abs(predecessor - frequency); double postDelta = Math.Abs(successor - frequency); return(preDelta < postDelta ? this[predecessor] : this[successor]); } else if (predecessorFound) { return(this[predecessor]); } else if (successorFound) { return(this[successor]); } throw new ArgumentOutOfRangeException(nameof(frequency)); }