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 ennumpy.ndarrayav float i ett enda svep.- Parametrar:
buffer – en
bytes-liknande buffert som innehåller stickproven.count – antal element att läsa.
-1läser hela bufferten frånoffsettill slutet.offset – antal byte att hoppa över i början av bufferten.
out – valfri förallokerad
numpy.ndarrayav 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.ndarrayav float med längdencount(eller det tillgängliga antalet stickprov närcountä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 ennumpy.ndarrayav float i ett enda svep.- Parametrar:
buffer – en bytes-liknande buffert som innehåller stickproven.
count – antal element att läsa.
-1läser hela bufferten frånoffsettill slutet.offset – antal byte att hoppa över i början av bufferten.
out – valfri förallokerad
numpy.ndarrayav 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.ndarrayav float med längdencount(eller det tillgängliga antalet stickprov närcountä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 ennumpy.ndarrayav float i ett enda svep.- Parametrar:
buffer – en bytes-liknande buffert som innehåller stickproven.
count – antal element att läsa.
-1läser hela bufferten frånoffsettill slutet.offset – antal byte att hoppa över i början av bufferten.
out – valfri förallokerad
numpy.ndarrayav 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.ndarrayav float med längdencount(eller det tillgängliga antalet stickprov närcountä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 ennumpy.ndarrayav float i ett enda svep.- Parametrar:
buffer – en bytes-liknande buffert som innehåller stickproven.
count – antal element att läsa.
-1läser hela bufferten frånoffsettill slutet.offset – antal byte att hoppa över i början av bufferten.
out – valfri förallokerad
numpy.ndarrayav 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.ndarrayav float med längdencount(eller det tillgängliga antalet stickprov närcountä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 tillnumpy.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.ndarrayav 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
Truereturneras den naturliga logaritmen av magnituden i stället för magnituden själv.
- Returnerar:
en
numpy.ndarrayav float med samma längd som r som innehåller magnituden (eller dess logaritm) i varje frekvensbin.