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
int16en unnumpy.ndarrayde float en una sola pasada.- Parámetros:
buffer – un búfer de tipo
bytesque contiene las muestras.count – número de elementos a leer.
-1lee todo el búfer desdeoffsethasta el final.offset – número de bytes que se omiten al inicio del búfer.
out – un
numpy.ndarrayde 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.ndarrayde float de longitudcount(o el número de muestras disponibles cuandocountes-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
uint16en unnumpy.ndarrayde 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.
-1lee todo el búfer desdeoffsethasta el final.offset – número de bytes que se omiten al inicio del búfer.
out – un
numpy.ndarrayde 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.ndarrayde float de longitudcount(o el número de muestras disponibles cuandocountes-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
int32en unnumpy.ndarrayde 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.
-1lee todo el búfer desdeoffsethasta el final.offset – número de bytes que se omiten al inicio del búfer.
out – un
numpy.ndarrayde 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.ndarrayde float de longitudcount(o el número de muestras disponibles cuandocountes-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
uint32en unnumpy.ndarrayde 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.
-1lee todo el búfer desdeoffsethasta el final.offset – número de bytes que se omiten al inicio del búfer.
out – un
numpy.ndarrayde 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.ndarrayde float de longitudcount(o el número de muestras disponibles cuandocountes-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 anumpy.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.ndarrayde 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.ndarrayde float de la misma longitud que r que contiene la magnitud (o su logaritmo) en cada banda de frecuencia.