ulab.utils — ulab 유틸리티 헬퍼

ulab.utils 서브모듈은 numpy.ndarray 객체에 대해 동작하지만 표준 NumPy / SciPy 영역 밖에 있는 소수의 헬퍼를 제공합니다. 이 헬퍼들은 임베디드 타깃에서 흔한 스트리밍 패턴 – 16비트보다 넓은 주변장치 버퍼, 할당 없는 크기 스펙트럼 – 에 맞게 조정되어 있습니다.

버퍼 변환기

표준 numpy.frombuffer()numpy 자체가 정의하는 dtype(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 표본 버퍼를 한 번에 float numpy.ndarray 로 변환합니다.

매개변수:
  • buffer – 표본을 담고 있는 bytes 형 버퍼입니다.

  • count – 읽을 요소 수입니다. -1offset 부터 끝까지 버퍼 전체를 읽습니다.

  • offset – 버퍼 시작에서 건너뛸 바이트 수입니다.

  • out – 결과를 기록할, 미리 할당된 float numpy.ndarray (선택 사항)입니다. 전달하면 새 배열이 할당되지 않습니다.

  • byteswap – 변환 전에 각 요소의 바이트 순서를 뒤집습니다 – 버퍼가 카메라 CPU와 반대되는 바이트 순서로 기록한 주변장치에서 온 경우에 적합한 설정입니다.

반환:

길이가 count 인 float numpy.ndarray 입니다(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 표본 버퍼를 한 번에 float numpy.ndarray 로 변환합니다.

매개변수:
  • buffer – 표본을 담고 있는 bytes 형 버퍼입니다.

  • count – 읽을 요소 수입니다. -1offset 부터 끝까지 버퍼 전체를 읽습니다.

  • offset – 버퍼 시작에서 건너뛸 바이트 수입니다.

  • out – 결과를 기록할, 미리 할당된 float numpy.ndarray (선택 사항)입니다. 전달하면 새 배열이 할당되지 않습니다.

  • byteswap – 변환 전에 각 요소의 바이트 순서를 뒤집습니다 – 버퍼가 카메라 CPU와 반대되는 바이트 순서로 기록한 주변장치에서 온 경우에 적합한 설정입니다.

반환:

길이가 count 인 float numpy.ndarray 입니다(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 표본 버퍼를 한 번에 float numpy.ndarray 로 변환합니다.

매개변수:
  • buffer – 표본을 담고 있는 bytes 형 버퍼입니다.

  • count – 읽을 요소 수입니다. -1offset 부터 끝까지 버퍼 전체를 읽습니다.

  • offset – 버퍼 시작에서 건너뛸 바이트 수입니다.

  • out – 결과를 기록할, 미리 할당된 float numpy.ndarray (선택 사항)입니다. 전달하면 새 배열이 할당되지 않습니다.

  • byteswap – 변환 전에 각 요소의 바이트 순서를 뒤집습니다 – 버퍼가 카메라 CPU와 반대되는 바이트 순서로 기록한 주변장치에서 온 경우에 적합한 설정입니다.

반환:

길이가 count 인 float numpy.ndarray 입니다(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 표본 버퍼를 한 번에 float numpy.ndarray 로 변환합니다.

매개변수:
  • buffer – 표본을 담고 있는 bytes 형 버퍼입니다.

  • count – 읽을 요소 수입니다. -1offset 부터 끝까지 버퍼 전체를 읽습니다.

  • offset – 버퍼 시작에서 건너뛸 바이트 수입니다.

  • out – 결과를 기록할, 미리 할당된 float numpy.ndarray (선택 사항)입니다. 전달하면 새 배열이 할당되지 않습니다.

  • byteswap – 변환 전에 각 요소의 바이트 순서를 뒤집습니다 – 버퍼가 카메라 CPU와 반대되는 바이트 순서로 기록한 주변장치에서 온 경우에 적합한 설정입니다.

반환:

길이가 count 인 float numpy.ndarray 입니다(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

numpy.fft.fft() 호출 후의 np.sqrt(real * real + imag * imag) 와 개념적으로 동등한 입력의 이산 푸리에 변환 크기를 반환하되, 명시적 형태라면 할당했을 중간 버퍼를 할당하지 않습니다.

매개변수:
  • r – 1차원 float numpy.ndarray 로 표현된 입력의 실수부입니다. 그 길이는 2의 거듭제곱이어야 합니다.

  • imag – 입력의 허수부(선택 사항)로, r 과 동일한 형태입니다. 생략하면 입력은 순수 실수로 취급됩니다.

  • scratchpad – FFT용 작업 버퍼(선택 사항)입니다. 전달하면 임시 작업 배열이 할당되지 않습니다.

  • out – 크기 스펙트럼을 위한, 미리 할당된 대상 버퍼(선택 사항)입니다. 전달하면 결과가 그 안에 직접 기록됩니다.

  • logTrue 이면 크기 대신 크기의 자연로그를 반환합니다.

반환:

각 주파수 빈에서의 크기(또는 그 로그)를 담는, r 과 동일한 길이의 float numpy.ndarray 입니다.