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.
- Returer:
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.
- Returer:
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.
- Returer:
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.
- Returer:
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.
- Returer:
en
numpy.ndarrayav float med samma längd som r som innehåller magnituden (eller dess logaritm) i varje frekvensbin.