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 из чисел с плавающей точкой за один проход.

Параметры:
  • bufferbytes-подобный буфер, содержащий выборки.

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