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.

Returnerar:

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.

Returnerar:

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.

Returnerar:

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.

Returnerar:

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.

Returnerar:

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