@@ -214,51 +214,3 @@ def peakdet(x, delta, t=None):
214214 return np .array (maxtab ), np .array (mintab )
215215
216216
217- def wrap_angle (angle , units = 'rad' , range = 'symmetric' ):
218- """Wrap an angle to a specified range.
219-
220- :param np.array angle: angular values
221- :param string units: either 'rad' or 'deg'
222- :param string range: either 'symmetric' for [-pi, pi] / [-180, 180],
223- or 'positive' for [0, 2pi] / [0, 360]
224-
225- :return: - **angle** -- the angular values wrapped as requested
226- """
227- if units == 'rad' :
228- period = 2 * np .pi
229- if range == 'symmetric' :
230- return (angle + np .pi ) % period - np .pi
231- elif range == 'positive' :
232- return angle % period
233- else :
234- raise ValueError (f"Invalid range '{ range } '. Expected 'symmetric' or 'positive'." )
235-
236- elif units == 'deg' :
237- period = 360.
238- if range == 'symmetric' :
239- return (angle + 180. ) % period - 180.
240- elif range == 'positive' :
241- return angle % period
242- else :
243- raise ValueError (f"Invalid range '{ range } '. Expected 'symmetric' or 'positive'." )
244-
245- else :
246- raise ValueError (f"Invalid units '{ units } '. Expected 'rad' or 'deg'." )
247-
248-
249- def ensure_iterable (v , length ):
250- """Ensure v is a list of the specified length.
251-
252- If v is not iterable (e.g. a scalar), it is broadcast
253- into a list by repeating it `length` times. If it is already iterable,
254- it is returned as-is.
255-
256- :param v: a scalar or iterable
257- :param int length: desired length of the output list when broadcasting a scalar
258- :return: v repeated `length` times if scalar, otherwise unchanged
259-
260- :return: - **v** -- list or iterable
261- """
262- if not hasattr (v , '__iter__' ):
263- return [v ] * length
264- return v
0 commit comments