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, содержащий амплитуду (или её логарифм) в каждом частотном бине.