ulab.utils --- ตัวช่วย utility ของ ulab

โมดูลย่อย ulab.utils จัดเตรียมชุดตัวช่วยขนาดเล็กที่ทำงานกับออบเจกต์ numpy.ndarray แต่อยู่นอกพื้นผิวมาตรฐาน NumPy / SciPy ตัวช่วยเหล่านี้ถูกปรับแต่งสำหรับรูปแบบการสตรีมที่พบบ่อยบนเป้าหมายแบบฝังตัว -- บัฟเฟอร์อุปกรณ์ต่อพ่วงที่กว้างกว่า 16 บิต, สเปกตรัมขนาดที่ไม่ต้องการการจัดสรรหน่วยความจำ

ตัวแปลงบัฟเฟอร์

numpy.frombuffer() มาตรฐานรองรับเฉพาะ dtype ที่ numpy กำหนดเอง (uint8, int8, uint16, int16, float) ตัวช่วยด้านล่างขยายการรองรับนั้นไปยังบัฟเฟอร์ไบต์ int16 / uint16 / int32 / uint32 และคืน numpy.ndarray แบบ float ในรอบเดียว

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 แบบ float ในรอบเดียว

พารามิเตอร์:
  • buffer -- บัฟเฟอร์แบบ bytes ที่มีตัวอย่าง

  • count -- จำนวนสมาชิกที่จะอ่าน -1 อ่านบัฟเฟอร์ทั้งหมดจาก offset ถึงท้าย

  • offset -- จำนวนไบต์ที่จะข้ามที่จุดเริ่มต้นของบัฟเฟอร์

  • out -- numpy.ndarray แบบ float ที่จัดสรรล่วงหน้า (ไม่บังคับ) สำหรับเขียนผลลัพธ์ เมื่อระบุจะไม่มีการจัดสรรอาร์เรย์ใหม่

  • byteswap -- กลับลำดับไบต์ของแต่ละสมาชิกก่อนแปลง -- การตั้งค่าที่ถูกต้องเมื่อบัฟเฟอร์มาจากอุปกรณ์ต่อพ่วงที่เขียนด้วยลำดับไบต์ตรงข้ามกับ CPU ของกล้อง

ค่าที่คืน:

numpy.ndarray แบบ float ที่มีความยาว 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 แบบ float ในรอบเดียว

พารามิเตอร์:
  • buffer -- บัฟเฟอร์แบบ bytes ที่มีตัวอย่าง

  • count -- จำนวนสมาชิกที่จะอ่าน -1 อ่านบัฟเฟอร์ทั้งหมดจาก offset ถึงท้าย

  • offset -- จำนวนไบต์ที่จะข้ามที่จุดเริ่มต้นของบัฟเฟอร์

  • out -- numpy.ndarray แบบ float ที่จัดสรรล่วงหน้า (ไม่บังคับ) สำหรับเขียนผลลัพธ์ เมื่อระบุจะไม่มีการจัดสรรอาร์เรย์ใหม่

  • byteswap -- กลับลำดับไบต์ของแต่ละสมาชิกก่อนแปลง -- การตั้งค่าที่ถูกต้องเมื่อบัฟเฟอร์มาจากอุปกรณ์ต่อพ่วงที่เขียนด้วยลำดับไบต์ตรงข้ามกับ CPU ของกล้อง

ค่าที่คืน:

numpy.ndarray แบบ float ที่มีความยาว 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 แบบ float ในรอบเดียว

พารามิเตอร์:
  • buffer -- บัฟเฟอร์แบบ bytes ที่มีตัวอย่าง

  • count -- จำนวนสมาชิกที่จะอ่าน -1 อ่านบัฟเฟอร์ทั้งหมดจาก offset ถึงท้าย

  • offset -- จำนวนไบต์ที่จะข้ามที่จุดเริ่มต้นของบัฟเฟอร์

  • out -- numpy.ndarray แบบ float ที่จัดสรรล่วงหน้า (ไม่บังคับ) สำหรับเขียนผลลัพธ์ เมื่อระบุจะไม่มีการจัดสรรอาร์เรย์ใหม่

  • byteswap -- กลับลำดับไบต์ของแต่ละสมาชิกก่อนแปลง -- การตั้งค่าที่ถูกต้องเมื่อบัฟเฟอร์มาจากอุปกรณ์ต่อพ่วงที่เขียนด้วยลำดับไบต์ตรงข้ามกับ CPU ของกล้อง

ค่าที่คืน:

numpy.ndarray แบบ float ที่มีความยาว 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 แบบ float ในรอบเดียว

พารามิเตอร์:
  • buffer -- บัฟเฟอร์แบบ bytes ที่มีตัวอย่าง

  • count -- จำนวนสมาชิกที่จะอ่าน -1 อ่านบัฟเฟอร์ทั้งหมดจาก offset ถึงท้าย

  • offset -- จำนวนไบต์ที่จะข้ามที่จุดเริ่มต้นของบัฟเฟอร์

  • out -- numpy.ndarray แบบ float ที่จัดสรรล่วงหน้า (ไม่บังคับ) สำหรับเขียนผลลัพธ์ เมื่อระบุจะไม่มีการจัดสรรอาร์เรย์ใหม่

  • byteswap -- กลับลำดับไบต์ของแต่ละสมาชิกก่อนแปลง -- การตั้งค่าที่ถูกต้องเมื่อบัฟเฟอร์มาจากอุปกรณ์ต่อพ่วงที่เขียนด้วยลำดับไบต์ตรงข้ามกับ CPU ของกล้อง

ค่าที่คืน:

numpy.ndarray แบบ float ที่มีความยาว 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

คืนค่าขนาดของการแปลง Fourier แบบไม่ต่อเนื่องของอินพุต ซึ่งเทียบเท่ากับ np.sqrt(real * real + imag * imag) หลังการเรียก numpy.fft.fft() -- โดยไม่ต้องจัดสรรบัฟเฟอร์ชั่วคราวที่รูปแบบชัดเจนจะต้องใช้

พารามิเตอร์:
  • r -- ส่วนจริงของอินพุตเป็น numpy.ndarray แบบ float 1-D ความยาวต้องเป็นกำลังของสอง

  • imag -- ส่วนจินตภาพของอินพุต (ไม่บังคับ) รูปร่างเดียวกับ r เมื่อไม่ระบุ อินพุตจะถูกถือว่าเป็นจำนวนจริงล้วน

  • scratchpad -- บัฟเฟอร์ทำงานสำหรับ FFT (ไม่บังคับ) เมื่อระบุ จะไม่มีการจัดสรรอาร์เรย์ทำงานชั่วคราว

  • out -- บัฟเฟอร์ปลายทางที่จัดสรรล่วงหน้า (ไม่บังคับ) สำหรับสเปกตรัมขนาด เมื่อระบุ ผลลัพธ์จะถูกเขียนลงโดยตรง

  • log -- เมื่อเป็น True จะคืนลอการิทึมธรรมชาติของขนาดแทนที่จะเป็นขนาดเอง

ค่าที่คืน:

numpy.ndarray แบบ float ที่มีความยาวเดียวกับ r ซึ่งมีขนาด (หรือลอการิทึมของมัน) ที่แต่ละ frequency bin