ulab.utils --- Helper utilitas ulab

Submodul ulab.utils menyediakan sejumlah kecil helper yang beroperasi pada objek numpy.ndarray tetapi berada di luar permukaan NumPy / SciPy standar. Helper ini disetel untuk pola streaming yang umum pada target tertanam -- buffer periferal lebih-dari-16-bit, spektrum magnitudo bebas-alokasi.

Konverter buffer

Standar numpy.frombuffer() hanya menangani dtype yang didefinisikan oleh numpy itu sendiri (uint8, int8, uint16, int16, float). Helper di bawah ini memperluas cakupan tersebut ke buffer byte int16 / uint16 / int32 / uint32 dan mengembalikan float numpy.ndarray dalam satu langkah.

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

Mengonversi buffer sampel int16 menjadi float numpy.ndarray dalam satu langkah.

Parameter:
  • buffer -- buffer seperti bytes yang menyimpan sampel.

  • count -- jumlah elemen yang dibaca. -1 membaca seluruh buffer dari offset hingga akhir.

  • offset -- jumlah byte yang dilewati di awal buffer.

  • out -- float numpy.ndarray yang telah dialokasikan sebelumnya secara opsional untuk menulis hasilnya. Ketika diberikan, tidak ada array baru yang dialokasikan.

  • byteswap -- membalik urutan byte dari setiap elemen sebelum mengonversi -- pengaturan yang tepat ketika buffer berasal dari periferal yang menulis dalam urutan byte yang berlawanan dari CPU kamera.

Kembali:

float numpy.ndarray dengan panjang count (atau jumlah sampel yang tersedia ketika count adalah -1).

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

Mengonversi buffer sampel uint16 menjadi float numpy.ndarray dalam satu langkah.

Parameter:
  • buffer -- buffer seperti bytes yang menyimpan sampel.

  • count -- jumlah elemen yang dibaca. -1 membaca seluruh buffer dari offset hingga akhir.

  • offset -- jumlah byte yang dilewati di awal buffer.

  • out -- float numpy.ndarray yang telah dialokasikan sebelumnya secara opsional untuk menulis hasilnya. Ketika diberikan, tidak ada array baru yang dialokasikan.

  • byteswap -- membalik urutan byte dari setiap elemen sebelum mengonversi -- pengaturan yang tepat ketika buffer berasal dari periferal yang menulis dalam urutan byte yang berlawanan dari CPU kamera.

Kembali:

float numpy.ndarray dengan panjang count (atau jumlah sampel yang tersedia ketika count adalah -1).

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

Mengonversi buffer sampel int32 menjadi float numpy.ndarray dalam satu langkah.

Parameter:
  • buffer -- buffer seperti bytes yang menyimpan sampel.

  • count -- jumlah elemen yang dibaca. -1 membaca seluruh buffer dari offset hingga akhir.

  • offset -- jumlah byte yang dilewati di awal buffer.

  • out -- float numpy.ndarray yang telah dialokasikan sebelumnya secara opsional untuk menulis hasilnya. Ketika diberikan, tidak ada array baru yang dialokasikan.

  • byteswap -- membalik urutan byte dari setiap elemen sebelum mengonversi -- pengaturan yang tepat ketika buffer berasal dari periferal yang menulis dalam urutan byte yang berlawanan dari CPU kamera.

Kembali:

float numpy.ndarray dengan panjang count (atau jumlah sampel yang tersedia ketika count adalah -1).

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

Mengonversi buffer sampel uint32 menjadi float numpy.ndarray dalam satu langkah.

Parameter:
  • buffer -- buffer seperti bytes yang menyimpan sampel.

  • count -- jumlah elemen yang dibaca. -1 membaca seluruh buffer dari offset hingga akhir.

  • offset -- jumlah byte yang dilewati di awal buffer.

  • out -- float numpy.ndarray yang telah dialokasikan sebelumnya secara opsional untuk menulis hasilnya. Ketika diberikan, tidak ada array baru yang dialokasikan.

  • byteswap -- membalik urutan byte dari setiap elemen sebelum mengonversi -- pengaturan yang tepat ketika buffer berasal dari periferal yang menulis dalam urutan byte yang berlawanan dari CPU kamera.

Kembali:

float numpy.ndarray dengan panjang count (atau jumlah sampel yang tersedia ketika count adalah -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

Mengembalikan magnitudo dari transformasi Fourier diskret dari masukan, secara konseptual setara dengan np.sqrt(real * real + imag * imag) setelah pemanggilan numpy.fft.fft() -- tanpa mengalokasikan buffer perantara yang akan dibutuhkan oleh bentuk eksplisitnya.

Parameter:
  • r -- bagian real dari masukan sebagai float numpy.ndarray 1-D. Panjangnya harus berupa pangkat dua.

  • imag -- bagian imajiner opsional dari masukan, bentuk sama dengan r. Ketika dihilangkan, masukan diperlakukan sebagai murni real.

  • scratchpad -- buffer kerja opsional untuk FFT. Ketika diberikan, tidak ada array kerja sementara yang dialokasikan.

  • out -- buffer tujuan yang telah dialokasikan sebelumnya secara opsional untuk spektrum magnitudo. Ketika diberikan, hasilnya ditulis langsung ke dalamnya.

  • log -- ketika True, kembalikan logaritma natural dari magnitudo alih-alih magnitudo itu sendiri.

Kembali:

float numpy.ndarray dengan panjang sama dengan r yang menyimpan magnitudo (atau logaritmanya) pada setiap bin frekuensi.