ó
    pñ:if   ã                   óV   • S r SSKrS
S jrSS jrSS jrSS jrSS jrSS jrSS	 jr	g)z-
Functions for acting on a axis of an array.
é    Nc                 óp   • [        S5      /U R                  -  n[        XU5      XT'   U [        U5         nU$ )a´  Take a slice along axis 'axis' from 'a'.

Parameters
----------
a : numpy.ndarray
    The array to be sliced.
start, stop, step : int or None
    The slice parameters.
axis : int, optional
    The axis of `a` to be sliced.

Examples
--------
>>> import numpy as np
>>> from scipy.signal._arraytools import axis_slice
>>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> axis_slice(a, start=0, stop=1, axis=1)
array([[1],
       [4],
       [7]])
>>> axis_slice(a, start=1, axis=0)
array([[4, 5, 6],
       [7, 8, 9]])

Notes
-----
The keyword arguments start, stop and step are used by calling
slice(start, stop, step). This implies axis_slice() does not
handle its arguments the exactly the same as indexing. To select
a single index k, for example, use
    axis_slice(a, start=k, stop=k+1)
In this case, the length of the axis 'axis' in the result will
be 1; the trivial dimension is not removed. (Use numpy.squeeze()
to remove trivial axes.)
N)ÚsliceÚndimÚtuple)ÚaÚstartÚstopÚstepÚaxisÚa_sliceÚbs          Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/scipy/signal/_arraytools.pyÚ
axis_slicer      s:   € ôH �T‹{ˆm˜aŸf™fÑ$€GÜ˜% tÓ,€G�MØ	Œ%�‹.Ñ€AØ€Hó    c                 ó   • [        U SUS9$ )z]Reverse the 1-D slices of `a` along axis `axis`.

Returns axis_slice(a, step=-1, axis=axis).
éÿÿÿÿ)r
   r   )r   )r   r   s     r   Úaxis_reverser   1   s   € ô
 �a˜b tÑ,Ð,r   c                 ó.  • US:  a  U $ XR                   U   S-
  :”  a  [        SXR                   U   S-
  4-  5      e[        U SSUS9n[        XSSUS9n[        U SUS9n[        U SUS	-   * SUS9n[        R                  " S	U-  U-
  U S	U-  U-
  4US
9nU$ )aØ  
Odd extension at the boundaries of an array

Generate a new ndarray by making an odd extension of `x` along an axis.

Parameters
----------
x : ndarray
    The array to be extended.
n : int
    The number of elements by which to extend `x` at each end of the axis.
axis : int, optional
    The axis along which to extend `x`. Default is -1.

Examples
--------
>>> import numpy as np
>>> from scipy.signal._arraytools import odd_ext
>>> a = np.array([[1, 2, 3, 4, 5], [0, 1, 4, 9, 16]])
>>> odd_ext(a, 2)
array([[-1,  0,  1,  2,  3,  4,  5,  6,  7],
       [-4, -1,  0,  1,  4,  9, 16, 23, 28]])

Odd extension is a "180 degree rotation" at the endpoints of the original
array:

>>> t = np.linspace(0, 1.5, 100)
>>> a = 0.9 * np.sin(2 * np.pi * t**2)
>>> b = odd_ext(a, 40)
>>> import matplotlib.pyplot as plt
>>> plt.plot(np.arange(-40, 140), b, 'b', lw=1, label='odd extension')
>>> plt.plot(np.arange(100), a, 'r', lw=2, label='original')
>>> plt.legend(loc='best')
>>> plt.show()
é   úXThe extension length n (%d) is too big. It must not exceed x.shape[axis]-1, which is %d.r   ©r   r	   r   r   ©r   r	   r
   r   ©r   r   éþÿÿÿé   ©r   ©ÚshapeÚ
ValueErrorr   ÚnpÚconcatenate)ÚxÚnr   Úleft_endÚleft_extÚ	right_endÚ	right_extÚexts           r   Úodd_extr)   9   sÐ   € ðH 	ˆ1ƒuØˆØ�7‰7�4‰=˜1ÑÓÜð LàŸw™w t™}¨qÑ0Ð1ñ2ó 3ð 	3ô ˜! 1¨1°4Ñ8€HÜ˜!¨1°2¸DÑA€HÜ˜1 B¨TÑ2€IÜ˜1 B¨q°1©u¨X¸BÀTÑJ€IÜ
�.Š.˜!˜h™,¨Ñ1ØØ˜i™-¨)Ñ3ð5ð #ñ$€Cð €Jr   c                 óè   • US:  a  U $ XR                   U   S-
  :”  a  [        SXR                   U   S-
  4-  5      e[        XSSUS9n[        U SUS-   * SUS9n[        R                  " UU U4US9nU$ )	aÙ  
Even extension at the boundaries of an array

Generate a new ndarray by making an even extension of `x` along an axis.

Parameters
----------
x : ndarray
    The array to be extended.
n : int
    The number of elements by which to extend `x` at each end of the axis.
axis : int, optional
    The axis along which to extend `x`. Default is -1.

Examples
--------
>>> import numpy as np
>>> from scipy.signal._arraytools import even_ext
>>> a = np.array([[1, 2, 3, 4, 5], [0, 1, 4, 9, 16]])
>>> even_ext(a, 2)
array([[ 3,  2,  1,  2,  3,  4,  5,  4,  3],
       [ 4,  1,  0,  1,  4,  9, 16,  9,  4]])

Even extension is a "mirror image" at the boundaries of the original array:

>>> t = np.linspace(0, 1.5, 100)
>>> a = 0.9 * np.sin(2 * np.pi * t**2)
>>> b = even_ext(a, 40)
>>> import matplotlib.pyplot as plt
>>> plt.plot(np.arange(-40, 140), b, 'b', lw=1, label='even extension')
>>> plt.plot(np.arange(100), a, 'r', lw=2, label='original')
>>> plt.legend(loc='best')
>>> plt.show()
r   r   r   r   r   r   r   r   r   )r"   r#   r   r%   r'   r(   s         r   Úeven_extr+   n   s    € ðF 	ˆ1ƒuØˆØ�7‰7�4‰=˜1ÑÓÜð LàŸw™w t™}¨qÑ0Ð1ñ2ó 3ð 	3ô ˜!¨1°2¸DÑA€HÜ˜1 B¨q°1©u¨X¸BÀTÑJ€IÜ
�.Š.˜(ØØ#ð%ð #ñ$€Cð €Jr   c                 óè   • US:  a  U $ [        U SSUS9nS/U R                  -  nXU'   [        R                  " X@R                  S9nXS-  n[        U SUS9nXW-  n[        R
                  " UU U4US9n	U	$ )a7  
Constant extension at the boundaries of an array

Generate a new ndarray that is a constant extension of `x` along an axis.

The extension repeats the values at the first and last element of
the axis.

Parameters
----------
x : ndarray
    The array to be extended.
n : int
    The number of elements by which to extend `x` at each end of the axis.
axis : int, optional
    The axis along which to extend `x`. Default is -1.

Examples
--------
>>> import numpy as np
>>> from scipy.signal._arraytools import const_ext
>>> a = np.array([[1, 2, 3, 4, 5], [0, 1, 4, 9, 16]])
>>> const_ext(a, 2)
array([[ 1,  1,  1,  2,  3,  4,  5,  5,  5],
       [ 0,  0,  0,  1,  4,  9, 16, 16, 16]])

Constant extension continues with the same values as the endpoints of the
array:

>>> t = np.linspace(0, 1.5, 100)
>>> a = 0.9 * np.sin(2 * np.pi * t**2)
>>> b = const_ext(a, 40)
>>> import matplotlib.pyplot as plt
>>> plt.plot(np.arange(-40, 140), b, 'b', lw=1, label='constant extension')
>>> plt.plot(np.arange(100), a, 'r', lw=2, label='original')
>>> plt.legend(loc='best')
>>> plt.show()
r   r   r   ©Údtyper   r   r   )r   r   r    Úonesr.   r!   )
r"   r#   r   r$   Ú
ones_shaper/   r%   r&   r'   r(   s
             r   Ú	const_extr1       sŽ   € ðN 	ˆ1ƒuØˆÜ˜! 1¨1°4Ñ8€HØ��q—v‘v‘€JØˆtÑÜ�7Š7�:§W¡WÑ-€DØ‰€HÜ˜1 B¨TÑ2€IØÑ €IÜ
�.Š.˜(ØØ#ð%ð #ñ$€Cð €Jr   c                 ó²   • US:  a  U $ [        U R                  5      nXU'   [        R                  " X0R                  S9n[        R
                  " X@U4US9nU$ )a^  
Zero padding at the boundaries of an array

Generate a new ndarray that is a zero-padded extension of `x` along
an axis.

Parameters
----------
x : ndarray
    The array to be extended.
n : int
    The number of elements by which to extend `x` at each end of the
    axis.
axis : int, optional
    The axis along which to extend `x`. Default is -1.

Examples
--------
>>> import numpy as np
>>> from scipy.signal._arraytools import zero_ext
>>> a = np.array([[1, 2, 3, 4, 5], [0, 1, 4, 9, 16]])
>>> zero_ext(a, 2)
array([[ 0,  0,  1,  2,  3,  4,  5,  0,  0],
       [ 0,  0,  0,  1,  4,  9, 16,  0,  0]])
r   r-   r   )Úlistr   r    Úzerosr.   r!   )r"   r#   r   Úzeros_shaper4   r(   s         r   Úzero_extr6   ×   sQ   € ð4 	ˆ1ƒuØˆÜ�q—w‘w“-€KØ�ÑÜ�HŠH�[¯©Ñ0€EÜ
�.Š.˜% EÐ*°Ñ
6€CØ€Jr   c                 ó˜   • U c  U(       d  [        S5      e U $ [        R                  " U 5      (       d  [        S5      e[        U 5      n U $ )zæ
Check if the given sampling frequency is a scalar and raises an exception
otherwise. If allow_none is False, also raises an exception for none
sampling rates. Returns the sampling frequency as float or none if the
input is none.
z#Sampling frequency can not be none.z.Sampling frequency fs must be a single scalar.)r   r    ÚisscalarÚfloat)ÚfsÚ
allow_nones     r   Ú_validate_fsr<   ú   sM   € ð 
�zÞÜÐBÓCÐCð ð €Iô �{Š{˜2�‰ÜÐMÓNÐNÜ�2‹YˆØ€Ir   )NNNr   )r   )T)
Ú__doc__Únumpyr    r   r   r)   r+   r1   r6   r<   © r   r   Ú<module>r@      s7   ðñó ô'ôT-ô2ôj/ôd4ôn õFr   