ulab.utils — ajutoare utilitare ulab¶
Submodulul ulab.utils oferă un set mic de ajutoare care operează pe obiecte numpy.ndarray, dar se află în afara suprafeței standard NumPy / SciPy. Ajutoarele sunt optimizate pentru tiparele de streaming comune pe țintele embedded – tampoane de periferice mai late de 16 biți, spectre de magnitudine fără alocare.
Convertoare de tampoane¶
Funcția standard numpy.frombuffer() gestionează doar dtype-urile pe care numpy le definește el însuși (uint8, int8, uint16, int16, float). Ajutoarele de mai jos extind această acoperire la tampoanele de octeți int16 / uint16 / int32 / uint32 și returnează un numpy.ndarray de tip float într-o singură trecere.
- ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertește un tampon de eșantioane
int16într-unnumpy.ndarrayde tip float într-o singură trecere.- Parametrii:
buffer – un tampon asemănător
bytescare conține eșantioanele.count – numărul de elemente de citit.
-1citește întregul tampon de laoffsetpână la sfârșit.offset – numărul de octeți de omis la începutul tamponului.
out – un
numpy.ndarrayde tip float prealocat opțional, în care se scrie rezultatul. Când este furnizat, nu se alocă niciun tablou nou.byteswap – inversează ordinea octeților fiecărui element înainte de conversie – setarea corectă atunci când tamponul a provenit de la un periferic care a scris în ordinea inversă de octeți față de CPU-ul camerei.
- Întoarce:
un
numpy.ndarrayde tip float de lungimecount(sau numărul disponibil de eșantioane cândcounteste-1).
- ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertește un tampon de eșantioane
uint16într-unnumpy.ndarrayde tip float într-o singură trecere.- Parametrii:
buffer – un tampon asemănător bytes care conține eșantioanele.
count – numărul de elemente de citit.
-1citește întregul tampon de laoffsetpână la sfârșit.offset – numărul de octeți de omis la începutul tamponului.
out – un
numpy.ndarrayde tip float prealocat opțional, în care se scrie rezultatul. Când este furnizat, nu se alocă niciun tablou nou.byteswap – inversează ordinea octeților fiecărui element înainte de conversie – setarea corectă atunci când tamponul a provenit de la un periferic care a scris în ordinea inversă de octeți față de CPU-ul camerei.
- Întoarce:
un
numpy.ndarrayde tip float de lungimecount(sau numărul disponibil de eșantioane cândcounteste-1).
- ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertește un tampon de eșantioane
int32într-unnumpy.ndarrayde tip float într-o singură trecere.- Parametrii:
buffer – un tampon asemănător bytes care conține eșantioanele.
count – numărul de elemente de citit.
-1citește întregul tampon de laoffsetpână la sfârșit.offset – numărul de octeți de omis la începutul tamponului.
out – un
numpy.ndarrayde tip float prealocat opțional, în care se scrie rezultatul. Când este furnizat, nu se alocă niciun tablou nou.byteswap – inversează ordinea octeților fiecărui element înainte de conversie – setarea corectă atunci când tamponul a provenit de la un periferic care a scris în ordinea inversă de octeți față de CPU-ul camerei.
- Întoarce:
un
numpy.ndarrayde tip float de lungimecount(sau numărul disponibil de eșantioane cândcounteste-1).
- ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertește un tampon de eșantioane
uint32într-unnumpy.ndarrayde tip float într-o singură trecere.- Parametrii:
buffer – un tampon asemănător bytes care conține eșantioanele.
count – numărul de elemente de citit.
-1citește întregul tampon de laoffsetpână la sfârșit.offset – numărul de octeți de omis la începutul tamponului.
out – un
numpy.ndarrayde tip float prealocat opțional, în care se scrie rezultatul. Când este furnizat, nu se alocă niciun tablou nou.byteswap – inversează ordinea octeților fiecărui element înainte de conversie – setarea corectă atunci când tamponul a provenit de la un periferic care a scris în ordinea inversă de octeți față de CPU-ul camerei.
- Întoarce:
un
numpy.ndarrayde tip float de lungimecount(sau numărul disponibil de eșantioane cândcounteste-1).
Spectrogramă¶
- 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¶
Returnează magnitudinea transformatei Fourier discrete a intrării, echivalentă conceptual cu
np.sqrt(real * real + imag * imag)după un apel cătrenumpy.fft.fft()– fără a aloca tampoanele intermediare pe care forma explicită le-ar aloca.- Parametrii:
r – partea reală a intrării ca
numpy.ndarrayde tip float 1-D. Lungimea sa trebuie să fie o putere a lui doi.imag – partea imaginară opțională a intrării, de aceeași formă ca r. Când este omisă, intrarea este tratată ca pur reală.
scratchpad – tampon de lucru opțional pentru FFT. Când este furnizat, nu se alocă niciun tablou de lucru temporar.
out – tampon de destinație prealocat opțional pentru spectrul de magnitudine. Când este furnizat, rezultatul este scris direct în el.
log – când
True, returnează logaritmul natural al magnitudinii în locul magnitudinii în sine.
- Întoarce:
un
numpy.ndarrayde tip float de aceeași lungime ca r care conține magnitudinea (sau logaritmul ei) în fiecare bin de frecvență.