ulab.utils — ulab-hjälpverktyg

Undermodulen ulab.utils tillhandahåller en liten uppsättning hjälpverktyg som arbetar på numpy.ndarray-objekt men ligger utanför den vanliga NumPy-/SciPy-ytan. Hjälpverktygen är anpassade för de strömningsmönster som är vanliga på inbäddade mål – buffertar från kringutrustning bredare än 16 bitar, allokeringsfria magnitudsspektra.

Buffertkonverterare

Standardfunktionen numpy.frombuffer() hanterar endast dtyper som numpy självt definierar (uint8, int8, uint16, int16, float). Hjälpverktygen nedan utökar täckningen till bytebuffertar av int16 / uint16 / int32 / uint32 och returnerar en numpy.ndarray av float i ett enda svep.

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

Konverterar en buffert av int16-stickprov till en numpy.ndarray av float i ett enda svep.

Parametrar:
  • buffer – en bytes-liknande buffert som innehåller stickproven.

  • count – antal element att läsa. -1 läser hela bufferten från offset till slutet.

  • offset – antal byte att hoppa över i början av bufferten.

  • out – valfri förallokerad numpy.ndarray av float att skriva resultatet i. När den anges allokeras ingen ny matris.

  • byteswap – vänder byteordningen för varje element före konverteringen – den rätta inställningen när bufferten kom från en kringutrustning som skrev i motsatt byteordning mot kamerans CPU.

Returer:

en numpy.ndarray av float med längden count (eller det tillgängliga antalet stickprov när count är -1).

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

Konverterar en buffert av uint16-stickprov till en numpy.ndarray av float i ett enda svep.

Parametrar:
  • buffer – en bytes-liknande buffert som innehåller stickproven.

  • count – antal element att läsa. -1 läser hela bufferten från offset till slutet.

  • offset – antal byte att hoppa över i början av bufferten.

  • out – valfri förallokerad numpy.ndarray av float att skriva resultatet i. När den anges allokeras ingen ny matris.

  • byteswap – vänder byteordningen för varje element före konverteringen – den rätta inställningen när bufferten kom från en kringutrustning som skrev i motsatt byteordning mot kamerans CPU.

Returer:

en numpy.ndarray av float med längden count (eller det tillgängliga antalet stickprov när count är -1).

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

Konverterar en buffert av int32-stickprov till en numpy.ndarray av float i ett enda svep.

Parametrar:
  • buffer – en bytes-liknande buffert som innehåller stickproven.

  • count – antal element att läsa. -1 läser hela bufferten från offset till slutet.

  • offset – antal byte att hoppa över i början av bufferten.

  • out – valfri förallokerad numpy.ndarray av float att skriva resultatet i. När den anges allokeras ingen ny matris.

  • byteswap – vänder byteordningen för varje element före konverteringen – den rätta inställningen när bufferten kom från en kringutrustning som skrev i motsatt byteordning mot kamerans CPU.

Returer:

en numpy.ndarray av float med längden count (eller det tillgängliga antalet stickprov när count är -1).

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

Konverterar en buffert av uint32-stickprov till en numpy.ndarray av float i ett enda svep.

Parametrar:
  • buffer – en bytes-liknande buffert som innehåller stickproven.

  • count – antal element att läsa. -1 läser hela bufferten från offset till slutet.

  • offset – antal byte att hoppa över i början av bufferten.

  • out – valfri förallokerad numpy.ndarray av float att skriva resultatet i. När den anges allokeras ingen ny matris.

  • byteswap – vänder byteordningen för varje element före konverteringen – den rätta inställningen när bufferten kom från en kringutrustning som skrev i motsatt byteordning mot kamerans CPU.

Returer:

en numpy.ndarray av float med längden count (eller det tillgängliga antalet stickprov när count är -1).

Spektrogram

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

Returnerar magnituden av den diskreta Fouriertransformen av indata, begreppsmässigt likvärdig med np.sqrt(real * real + imag * imag) efter ett anrop till numpy.fft.fft() – utan att allokera de mellanliggande buffertar som den explicita formen skulle göra.

Parametrar:
  • r – den reella delen av indata som en 1-D numpy.ndarray av float. Dess längd måste vara en tvåpotens.

  • imag – valfri imaginär del av indata, samma form som r. När den utelämnas behandlas indata som rent reell.

  • scratchpad – valfri arbetsbuffert för FFT:n. När den anges allokeras ingen tillfällig arbetsmatris.

  • out – valfri förallokerad destinationsbuffert för magnitudspektrumet. När den anges skrivs resultatet direkt in i den.

  • log – när True returneras den naturliga logaritmen av magnituden i stället för magnituden själv.

Returer:

en numpy.ndarray av float med samma längd som r som innehåller magnituden (eller dess logaritm) i varje frekvensbin.