ulab.utils — вспомогательные средства ulab#
Подмодуль ulab.utils предоставляет небольшой набор вспомогательных средств, которые работают с объектами numpy.ndarray, но находятся за пределами стандартной поверхности NumPy / SciPy. Эти средства настроены для потоковых сценариев, распространённых на встраиваемых платформах — буферов периферийных устройств шире 16 бит, спектров амплитуд без выделения памяти.
Преобразователи буферов#
Стандартная numpy.frombuffer() обрабатывает только те dtype, которые определяет сам numpy (uint8, int8, uint16, int16, float). Приведённые ниже средства расширяют это покрытие на байтовые буферы int16 / uint16 / int32 / uint32 и за один проход возвращают 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вnumpy.ndarrayиз чисел с плавающей точкой за один проход.- Параметры:
buffer –
bytes-подобный буфер, содержащий выборки.count – число считываемых элементов.
-1считывает весь буфер отoffsetдо конца.offset – число байтов, пропускаемых в начале буфера.
out – необязательный заранее выделенный
numpy.ndarrayиз чисел с плавающей точкой для записи результата. Если передан, новый массив не выделяется.byteswap – изменить порядок байтов каждого элемента перед преобразованием — правильная настройка, когда буфер пришёл от периферийного устройства, которое записывало данные в порядке байтов, противоположном CPU камеры.
- Результат:
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вnumpy.ndarrayиз чисел с плавающей точкой за один проход.- Параметры:
buffer – bytes-подобный буфер, содержащий выборки.
count – число считываемых элементов.
-1считывает весь буфер отoffsetдо конца.offset – число байтов, пропускаемых в начале буфера.
out – необязательный заранее выделенный
numpy.ndarrayиз чисел с плавающей точкой для записи результата. Если передан, новый массив не выделяется.byteswap – изменить порядок байтов каждого элемента перед преобразованием — правильная настройка, когда буфер пришёл от периферийного устройства, которое записывало данные в порядке байтов, противоположном CPU камеры.
- Результат:
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вnumpy.ndarrayиз чисел с плавающей точкой за один проход.- Параметры:
buffer – bytes-подобный буфер, содержащий выборки.
count – число считываемых элементов.
-1считывает весь буфер отoffsetдо конца.offset – число байтов, пропускаемых в начале буфера.
out – необязательный заранее выделенный
numpy.ndarrayиз чисел с плавающей точкой для записи результата. Если передан, новый массив не выделяется.byteswap – изменить порядок байтов каждого элемента перед преобразованием — правильная настройка, когда буфер пришёл от периферийного устройства, которое записывало данные в порядке байтов, противоположном CPU камеры.
- Результат:
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вnumpy.ndarrayиз чисел с плавающей точкой за один проход.- Параметры:
buffer – bytes-подобный буфер, содержащий выборки.
count – число считываемых элементов.
-1считывает весь буфер отoffsetдо конца.offset – число байтов, пропускаемых в начале буфера.
out – необязательный заранее выделенный
numpy.ndarrayиз чисел с плавающей точкой для записи результата. Если передан, новый массив не выделяется.byteswap – изменить порядок байтов каждого элемента перед преобразованием — правильная настройка, когда буфер пришёл от периферийного устройства, которое записывало данные в порядке байтов, противоположном CPU камеры.
- Результат:
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 – вещественная часть входных данных как одномерный
numpy.ndarrayиз чисел с плавающей точкой. Её длина должна быть степенью двойки.imag – необязательная мнимая часть входных данных той же формы, что и r. Если опущена, входные данные считаются чисто вещественными.
scratchpad – необязательный рабочий буфер для FFT. Если передан, временный рабочий массив не выделяется.
out – необязательный заранее выделенный буфер назначения для спектра амплитуд. Если передан, результат записывается непосредственно в него.
log – если
True, возвращает натуральный логарифм амплитуды вместо самой амплитуды.
- Результат:
numpy.ndarrayиз чисел с плавающей точкой той же длины, что и r, содержащий амплитуду (или её логарифм) в каждом частотном бине.