ulab.utils — ayudantes de utilidad de ulab

El submódulo ulab.utils proporciona un pequeño conjunto de ayudantes que operan sobre objetos numpy.ndarray pero que residen fuera de la superficie estándar de NumPy / SciPy. Los ayudantes están optimizados para los patrones de transmisión comunes en objetivos embebidos – búferes de periféricos de más de 16 bits, espectros de magnitud sin asignación de memoria.

Conversores de búfer

El estándar numpy.frombuffer() solo maneja los dtypes que el propio numpy define (uint8, int8, uint16, int16, float). Los ayudantes que se muestran a continuación amplían esa cobertura a los búferes de bytes int16 / uint16 / int32 / uint32 y devuelven un numpy.ndarray de float en una sola pasada.

ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Convierte un búfer de muestras int16 en un numpy.ndarray de float en una sola pasada.

Parámetros:
  • buffer – un búfer de tipo bytes que contiene las muestras.

  • count – número de elementos a leer. -1 lee todo el búfer desde offset hasta el final.

  • offset – número de bytes que se omiten al inicio del búfer.

  • out – un numpy.ndarray de float preasignado y opcional donde escribir el resultado. Cuando se proporciona, no se asigna ninguna matriz nueva.

  • byteswap – invierte el orden de los bytes de cada elemento antes de la conversión – la configuración adecuada cuando el búfer proviene de un periférico que escribió en un orden de bytes opuesto al de la CPU de la cámara.

Devuelve:

un numpy.ndarray de float de longitud count (o el número de muestras disponibles cuando count es -1).

ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Convierte un búfer de muestras uint16 en un numpy.ndarray de float en una sola pasada.

Parámetros:
  • buffer – un búfer de tipo bytes que contiene las muestras.

  • count – número de elementos a leer. -1 lee todo el búfer desde offset hasta el final.

  • offset – número de bytes que se omiten al inicio del búfer.

  • out – un numpy.ndarray de float preasignado y opcional donde escribir el resultado. Cuando se proporciona, no se asigna ninguna matriz nueva.

  • byteswap – invierte el orden de los bytes de cada elemento antes de la conversión – la configuración adecuada cuando el búfer proviene de un periférico que escribió en un orden de bytes opuesto al de la CPU de la cámara.

Devuelve:

un numpy.ndarray de float de longitud count (o el número de muestras disponibles cuando count es -1).

ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Convierte un búfer de muestras int32 en un numpy.ndarray de float en una sola pasada.

Parámetros:
  • buffer – un búfer de tipo bytes que contiene las muestras.

  • count – número de elementos a leer. -1 lee todo el búfer desde offset hasta el final.

  • offset – número de bytes que se omiten al inicio del búfer.

  • out – un numpy.ndarray de float preasignado y opcional donde escribir el resultado. Cuando se proporciona, no se asigna ninguna matriz nueva.

  • byteswap – invierte el orden de los bytes de cada elemento antes de la conversión – la configuración adecuada cuando el búfer proviene de un periférico que escribió en un orden de bytes opuesto al de la CPU de la cámara.

Devuelve:

un numpy.ndarray de float de longitud count (o el número de muestras disponibles cuando count es -1).

ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Convierte un búfer de muestras uint32 en un numpy.ndarray de float en una sola pasada.

Parámetros:
  • buffer – un búfer de tipo bytes que contiene las muestras.

  • count – número de elementos a leer. -1 lee todo el búfer desde offset hasta el final.

  • offset – número de bytes que se omiten al inicio del búfer.

  • out – un numpy.ndarray de float preasignado y opcional donde escribir el resultado. Cuando se proporciona, no se asigna ninguna matriz nueva.

  • byteswap – invierte el orden de los bytes de cada elemento antes de la conversión – la configuración adecuada cuando el búfer proviene de un periférico que escribió en un orden de bytes opuesto al de la CPU de la cámara.

Devuelve:

un numpy.ndarray de float de longitud count (o el número de muestras disponibles cuando count es -1).

Espectrograma

ulab.utils.spectrogram(r: numpy.ndarray, imag: numpy.ndarray | None = None, *, scratchpad: numpy.ndarray | None = None, out: numpy.ndarray | None = None, log: bool = False) numpy.ndarray

Devuelve la magnitud de la transformada discreta de Fourier de la entrada, conceptualmente equivalente a np.sqrt(real * real + imag * imag) tras una llamada a numpy.fft.fft() – sin asignar los búferes intermedios que requeriría la forma explícita.

Parámetros:
  • r – la parte real de la entrada como un numpy.ndarray de float 1-D. Su longitud debe ser una potencia de dos.

  • imag – parte imaginaria opcional de la entrada, con la misma forma que r. Cuando se omite, la entrada se trata como puramente real.

  • scratchpad – búfer de trabajo opcional para la FFT. Cuando se proporciona, no se asigna ninguna matriz de trabajo temporal.

  • out – búfer de destino opcional y preasignado para el espectro de magnitud. Cuando se proporciona, el resultado se escribe directamente en él.

  • log – cuando es True, devuelve el logaritmo natural de la magnitud en lugar de la propia magnitud.

Devuelve:

un numpy.ndarray de float de la misma longitud que r que contiene la magnitud (o su logaritmo) en cada banda de frecuencia.