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-un numpy.ndarray de 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. -1 citește întregul tampon de la offset până la sfârșit.

  • offset – numărul de octeți de omis la începutul tamponului.

  • out – un numpy.ndarray de 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.ndarray de tip float de lungime count (sau numărul disponibil de eșantioane când count este -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-un numpy.ndarray de 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. -1 citește întregul tampon de la offset până la sfârșit.

  • offset – numărul de octeți de omis la începutul tamponului.

  • out – un numpy.ndarray de 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.ndarray de tip float de lungime count (sau numărul disponibil de eșantioane când count este -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-un numpy.ndarray de 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. -1 citește întregul tampon de la offset până la sfârșit.

  • offset – numărul de octeți de omis la începutul tamponului.

  • out – un numpy.ndarray de 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.ndarray de tip float de lungime count (sau numărul disponibil de eșantioane când count este -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-un numpy.ndarray de 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. -1 citește întregul tampon de la offset până la sfârșit.

  • offset – numărul de octeți de omis la începutul tamponului.

  • out – un numpy.ndarray de 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.ndarray de tip float de lungime count (sau numărul disponibil de eșantioane când count este -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ătre numpy.fft.fft() – fără a aloca tampoanele intermediare pe care forma explicită le-ar aloca.

Parametrii:
  • r – partea reală a intrării ca numpy.ndarray de 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.ndarray de tip float de aceeași lungime ca r care conține magnitudinea (sau logaritmul ei) în fiecare bin de frecvență.