ulab.utils — допоміжні утиліти ulab#
Підмодуль ulab.utils надає невеликий набір допоміжних функцій, що працюють з об’єктами numpy.ndarray, але знаходяться поза стандартним інтерфейсом NumPy / SciPy. Ці утиліти оптимізовані для потокових шаблонів, типових на вбудованих цільових платформах — буфери периферійних пристроїв розрядністю понад 16 біт, спектри магнітуд без виділення пам’яті.
Перетворювачі буферів#
Стандартна функція numpy.frombuffer() обробляє лише типи, що визначені самим numpy (uint8, int8, uint16, int16, float). Наведені нижче утиліти розширюють підтримку до байтових буферів int16 / uint16 / int32 / uint32 і повертають float numpy.ndarray за один прохід.
- ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Перетворити буфер вибірок
int16на floatnumpy.ndarrayза один прохід.- Параметри:
buffer –
bytes-подібний буфер із вибірками.count – кількість елементів для читання.
-1читає весь буфер відoffsetдо кінця.offset – кількість байтів, які слід пропустити на початку буфера.
out – необов’язковий попередньо виділений float
numpy.ndarrayдля запису результату. Якщо задано, новий масив не виділяється.byteswap – змінити порядок байтів кожного елемента перед перетворенням — потрібний параметр, якщо буфер надійшов від периферійного пристрою, що записав дані у протилежному порядку байтів відносно CPU камери.
- Повертає:
float
numpy.ndarrayдовжиноюcount(або доступну кількість вибірок, якщоcountдорівнює-1).
- ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Перетворити буфер вибірок
uint16на floatnumpy.ndarrayза один прохід.- Параметри:
buffer – байтоподібний буфер із вибірками.
count – кількість елементів для читання.
-1читає весь буфер відoffsetдо кінця.offset – кількість байтів, які слід пропустити на початку буфера.
out – необов’язковий попередньо виділений float
numpy.ndarrayдля запису результату. Якщо задано, новий масив не виділяється.byteswap – змінити порядок байтів кожного елемента перед перетворенням — потрібний параметр, якщо буфер надійшов від периферійного пристрою, що записав дані у протилежному порядку байтів відносно CPU камери.
- Повертає:
float
numpy.ndarrayдовжиноюcount(або доступну кількість вибірок, якщоcountдорівнює-1).
- ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Перетворити буфер вибірок
int32на floatnumpy.ndarrayза один прохід.- Параметри:
buffer – байтоподібний буфер із вибірками.
count – кількість елементів для читання.
-1читає весь буфер відoffsetдо кінця.offset – кількість байтів, які слід пропустити на початку буфера.
out – необов’язковий попередньо виділений float
numpy.ndarrayдля запису результату. Якщо задано, новий масив не виділяється.byteswap – змінити порядок байтів кожного елемента перед перетворенням — потрібний параметр, якщо буфер надійшов від периферійного пристрою, що записав дані у протилежному порядку байтів відносно CPU камери.
- Повертає:
float
numpy.ndarrayдовжиноюcount(або доступну кількість вибірок, якщоcountдорівнює-1).
- ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Перетворити буфер вибірок
uint32на floatnumpy.ndarrayза один прохід.- Параметри:
buffer – байтоподібний буфер із вибірками.
count – кількість елементів для читання.
-1читає весь буфер відoffsetдо кінця.offset – кількість байтів, які слід пропустити на початку буфера.
out – необов’язковий попередньо виділений float
numpy.ndarrayдля запису результату. Якщо задано, новий масив не виділяється.byteswap – змінити порядок байтів кожного елемента перед перетворенням — потрібний параметр, якщо буфер надійшов від периферійного пристрою, що записав дані у протилежному порядку байтів відносно CPU камери.
- Повертає:
float
numpy.ndarrayдовжиноюcount(або доступну кількість вибірок, якщоcountдорівнює-1).
Спектрограма#
- 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#
Повернути магнітуду дискретного перетворення Фур’є вхідних даних, що концептуально еквівалентно
np.sqrt(real * real + imag * imag)після викликуnumpy.fft.fft()— без виділення проміжних буферів, яке потребує явна форма.- Параметри:
r – дійсна частина вхідних даних у вигляді одновимірного float
numpy.ndarray. Її довжина має бути степенем двійки.imag – необов’язкова уявна частина вхідних даних, тієї самої форми, що й r. Якщо не задано, вхідні дані вважаються суто дійсними.
scratchpad – необов’язковий робочий буфер для FFT. Якщо задано, тимчасовий робочий масив не виділяється.
out – необов’язковий попередньо виділений буфер призначення для спектра магнітуд. Якщо задано, результат записується безпосередньо до нього.
log – якщо
True, повертається натуральний логарифм магнітуди замість самої магнітуди.
- Повертає:
float
numpy.ndarrayтієї самої довжини, що й r, що містить магнітуду (або її логарифм) у кожному частотному бині.