ulab.utils --- Các tiện ích hỗ trợ ulab¶
Submodule ulab.utils cung cấp một tập hợp nhỏ các hàm trợ giúp hoạt động trên các đối tượng numpy.ndarray nhưng nằm ngoài bề mặt NumPy / SciPy tiêu chuẩn. Các hàm trợ giúp được tối ưu hóa cho các mẫu truyền phát phổ biến trên các thiết bị nhúng -- bộ đệm ngoại vi rộng hơn 16-bit, phổ biên độ không cần cấp phát.
Bộ chuyển đổi bộ đệm¶
Hàm numpy.frombuffer() tiêu chuẩn chỉ xử lý các dtype mà numpy tự định nghĩa (uint8, int8, uint16, int16, float). Các hàm trợ giúp dưới đây mở rộng phạm vi đó sang các bộ đệm byte int16 / uint16 / int32 / uint32 và trả về một numpy.ndarray float chỉ trong một lần.
- ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Chuyển đổi bộ đệm mẫu
int16thànhnumpy.ndarrayfloat chỉ trong một lần.- Tham số:
buffer -- bộ đệm kiểu
byteschứa các mẫu.count -- số phần tử cần đọc.
-1đọc toàn bộ bộ đệm từoffsetđến cuối.offset -- số byte cần bỏ qua ở đầu bộ đệm.
out -- mảng
numpy.ndarrayfloat được cấp phát trước tùy chọn để ghi kết quả vào. Khi được cung cấp, không có mảng mới nào được cấp phát.byteswap -- đảo ngược thứ tự byte của mỗi phần tử trước khi chuyển đổi -- cài đặt đúng khi bộ đệm đến từ một ngoại vi đã ghi theo thứ tự byte ngược với CPU của camera.
- Trả về:
một
numpy.ndarrayfloat có độ dàicount(hoặc số mẫu có sẵn khicountlà-1).
- ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Chuyển đổi bộ đệm mẫu
uint16thànhnumpy.ndarrayfloat chỉ trong một lần.- Tham số:
buffer -- bộ đệm kiểu bytes chứa các mẫu.
count -- số phần tử cần đọc.
-1đọc toàn bộ bộ đệm từoffsetđến cuối.offset -- số byte cần bỏ qua ở đầu bộ đệm.
out -- mảng
numpy.ndarrayfloat được cấp phát trước tùy chọn để ghi kết quả vào. Khi được cung cấp, không có mảng mới nào được cấp phát.byteswap -- đảo ngược thứ tự byte của mỗi phần tử trước khi chuyển đổi -- cài đặt đúng khi bộ đệm đến từ một ngoại vi đã ghi theo thứ tự byte ngược với CPU của camera.
- Trả về:
một
numpy.ndarrayfloat có độ dàicount(hoặc số mẫu có sẵn khicountlà-1).
- ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Chuyển đổi bộ đệm mẫu
int32thànhnumpy.ndarrayfloat chỉ trong một lần.- Tham số:
buffer -- bộ đệm kiểu bytes chứa các mẫu.
count -- số phần tử cần đọc.
-1đọc toàn bộ bộ đệm từoffsetđến cuối.offset -- số byte cần bỏ qua ở đầu bộ đệm.
out -- mảng
numpy.ndarrayfloat được cấp phát trước tùy chọn để ghi kết quả vào. Khi được cung cấp, không có mảng mới nào được cấp phát.byteswap -- đảo ngược thứ tự byte của mỗi phần tử trước khi chuyển đổi -- cài đặt đúng khi bộ đệm đến từ một ngoại vi đã ghi theo thứ tự byte ngược với CPU của camera.
- Trả về:
một
numpy.ndarrayfloat có độ dàicount(hoặc số mẫu có sẵn khicountlà-1).
- ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Chuyển đổi bộ đệm mẫu
uint32thànhnumpy.ndarrayfloat chỉ trong một lần.- Tham số:
buffer -- bộ đệm kiểu bytes chứa các mẫu.
count -- số phần tử cần đọc.
-1đọc toàn bộ bộ đệm từoffsetđến cuối.offset -- số byte cần bỏ qua ở đầu bộ đệm.
out -- mảng
numpy.ndarrayfloat được cấp phát trước tùy chọn để ghi kết quả vào. Khi được cung cấp, không có mảng mới nào được cấp phát.byteswap -- đảo ngược thứ tự byte của mỗi phần tử trước khi chuyển đổi -- cài đặt đúng khi bộ đệm đến từ một ngoại vi đã ghi theo thứ tự byte ngược với CPU của camera.
- Trả về:
một
numpy.ndarrayfloat có độ dàicount(hoặc số mẫu có sẵn khicountlà-1).
Phổ tần¶
- 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¶
Trả về biên độ của biến đổi Fourier rời rạc của đầu vào, tương đương về mặt khái niệm với
np.sqrt(real * real + imag * imag)sau khi gọinumpy.fft.fft()-- mà không cần cấp phát các bộ đệm trung gian mà dạng tường minh sẽ cần.- Tham số:
r -- phần thực của đầu vào dưới dạng
numpy.ndarrayfloat 1 chiều. Độ dài của nó phải là lũy thừa của hai.imag -- phần ảo tùy chọn của đầu vào, có cùng hình dạng với r. Khi bỏ qua, đầu vào được xử lý là thuần thực.
scratchpad -- bộ đệm làm việc tùy chọn cho FFT. Khi được cung cấp, không có mảng làm việc tạm thời nào được cấp phát.
out -- bộ đệm đích được cấp phát trước tùy chọn cho phổ biên độ. Khi được cung cấp, kết quả được ghi trực tiếp vào đó.
log -- khi là
True, trả về logarithm tự nhiên của biên độ thay vì bản thân biên độ.
- Trả về:
một
numpy.ndarrayfloat có cùng độ dài với r chứa biên độ (hoặc logarithm của nó) tại mỗi bin tần số.