ulab.utils — ulab segédfüggvények

A ulab.utils almodul egy kis halmaz segédfüggvényt biztosít, amelyek numpy.ndarray objektumokon működnek, de a szabványos NumPy / SciPy felületen kívül esnek. A segédfüggvények a beágyazott célokon gyakori adatfolyam-mintázatokhoz vannak hangolva – 16 bitnél szélesebb periféria-pufferek, allokációmentes magnitúdóspektrumok.

Pufferkonvertálók

A szabványos numpy.frombuffer() csak azokat a dtype-okat kezeli, amelyeket maga a numpy definiál (uint8, int8, uint16, int16, float). Az alábbi segédfüggvények kiterjesztik ezt a lefedettséget az int16 / uint16 / int32 / uint32 bájtpufferekre, és egyetlen menetben float típusú numpy.ndarray-t adnak vissza.

ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Egy int16 mintákból álló puffert egyetlen menetben float típusú numpy.ndarray-vé alakít.

Paraméterek:
  • buffer – egy bytes-szerű puffer, amely a mintákat tartalmazza.

  • count – a beolvasandó elemek száma. A -1 az egész puffert beolvassa az offset pozíciótól a végéig.

  • offset – a puffer elején átugrandó bájtok száma.

  • out – opcionális, előre lefoglalt float típusú numpy.ndarray, amelybe az eredményt írja. Ha meg van adva, nem foglal le új tömböt.

  • byteswap – az egyes elemek bájtsorrendjének megfordítása a konvertálás előtt – a megfelelő beállítás akkor, ha a puffer egy olyan perifériából érkezett, amely a kamera CPU-jával ellentétes bájtsorrendben írt.

Visszatérési érték:

egy count hosszúságú float típusú numpy.ndarray (vagy az elérhető minták száma, ha a count értéke -1).

ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Egy uint16 mintákból álló puffert egyetlen menetben float típusú numpy.ndarray-vé alakít.

Paraméterek:
  • buffer – egy bytes-szerű puffer, amely a mintákat tartalmazza.

  • count – a beolvasandó elemek száma. A -1 az egész puffert beolvassa az offset pozíciótól a végéig.

  • offset – a puffer elején átugrandó bájtok száma.

  • out – opcionális, előre lefoglalt float típusú numpy.ndarray, amelybe az eredményt írja. Ha meg van adva, nem foglal le új tömböt.

  • byteswap – az egyes elemek bájtsorrendjének megfordítása a konvertálás előtt – a megfelelő beállítás akkor, ha a puffer egy olyan perifériából érkezett, amely a kamera CPU-jával ellentétes bájtsorrendben írt.

Visszatérési érték:

egy count hosszúságú float típusú numpy.ndarray (vagy az elérhető minták száma, ha a count értéke -1).

ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Egy int32 mintákból álló puffert egyetlen menetben float típusú numpy.ndarray-vé alakít.

Paraméterek:
  • buffer – egy bytes-szerű puffer, amely a mintákat tartalmazza.

  • count – a beolvasandó elemek száma. A -1 az egész puffert beolvassa az offset pozíciótól a végéig.

  • offset – a puffer elején átugrandó bájtok száma.

  • out – opcionális, előre lefoglalt float típusú numpy.ndarray, amelybe az eredményt írja. Ha meg van adva, nem foglal le új tömböt.

  • byteswap – az egyes elemek bájtsorrendjének megfordítása a konvertálás előtt – a megfelelő beállítás akkor, ha a puffer egy olyan perifériából érkezett, amely a kamera CPU-jával ellentétes bájtsorrendben írt.

Visszatérési érték:

egy count hosszúságú float típusú numpy.ndarray (vagy az elérhető minták száma, ha a count értéke -1).

ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray

Egy uint32 mintákból álló puffert egyetlen menetben float típusú numpy.ndarray-vé alakít.

Paraméterek:
  • buffer – egy bytes-szerű puffer, amely a mintákat tartalmazza.

  • count – a beolvasandó elemek száma. A -1 az egész puffert beolvassa az offset pozíciótól a végéig.

  • offset – a puffer elején átugrandó bájtok száma.

  • out – opcionális, előre lefoglalt float típusú numpy.ndarray, amelybe az eredményt írja. Ha meg van adva, nem foglal le új tömböt.

  • byteswap – az egyes elemek bájtsorrendjének megfordítása a konvertálás előtt – a megfelelő beállítás akkor, ha a puffer egy olyan perifériából érkezett, amely a kamera CPU-jával ellentétes bájtsorrendben írt.

Visszatérési érték:

egy count hosszúságú float típusú numpy.ndarray (vagy az elérhető minták száma, ha a count értéke -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

Visszaadja a bemenet diszkrét Fourier-transzformációjának magnitúdóját, ami fogalmilag egyenértékű az np.sqrt(real * real + imag * imag) kifejezéssel egy numpy.fft.fft() hívás után – anélkül, hogy lefoglalná azokat a köztes puffereket, amelyeket az explicit forma igényelne.

Paraméterek:
  • r – a bemenet valós része 1-D float típusú numpy.ndarray formájában. Hosszának kettő hatványának kell lennie.

  • imag – a bemenet opcionális képzetes része, az r-rel azonos alakkal. Ha kimarad, a bemenetet tisztán valósnak tekinti.

  • scratchpad – opcionális munkapuffer az FFT-hez. Ha meg van adva, nem foglal le ideiglenes munkatömböt.

  • out – opcionális, előre lefoglalt céltároló-puffer a magnitúdóspektrum számára. Ha meg van adva, az eredményt közvetlenül abba írja.

  • log – ha True, a magnitúdó természetes logaritmusát adja vissza maga a magnitúdó helyett.

Visszatérési érték:

egy r-rel azonos hosszúságú float típusú numpy.ndarray, amely az egyes frekvenciasávokhoz tartozó magnitúdót (vagy annak logaritmusát) tartalmazza.