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, що містить магнітуду (або її логарифм) у кожному частотному бині.