กำไร:
- ความสามารถในการสร้างพารามิเตอร์การประมวลผลสัญญาณ เช่น ความถี่การสุ่มตัวอย่าง ประเภทตัวกรอง และหน้าต่างด้วย AI ได้อย่างแม่นยำ
- ความสามารถในการสร้างโค้ด Python สำหรับ FFT การออกแบบตัวกรองและการวิเคราะห์สัญญาณรบกวน และตรวจสอบ Nyquist และนามแฝง
- ความสามารถในการตรวจสอบการตีความสเปกตรัมที่สร้างโดย AI โดยการเปรียบเทียบกับการวัดและความคาดหวังทางกายภาพ
ข้อมูลดิบจากเซ็นเซอร์ ไมโครโฟน หรือสายไฟเพียงอย่างเดียวมักไม่มีความหมาย จำเป็นต้องประมวลผลและตีความบนแกนความถี่ แอมพลิจูด และเวลา แยกสเปกตรัมด้วย FFT กรองสัญญาณรบกวน จดจำลายเซ็นการสั่นสะเทือน... ทั้งหมดนี้ล้วนเป็นการประมวลผลสัญญาณ และ AI จะสร้างโค้ด Python ที่รวดเร็วในพื้นที่นี้ อธิบายแนวคิด คำนวณค่าสัมประสิทธิ์ตัวกรอง แต่ข้อผิดพลาดเล็กน้อยของพารามิเตอร์ในการประมวลผลสัญญาณ (ความถี่ในการสุ่มตัวอย่างผิด, หน้าต่างผิด, ข้ามการควบคุม Nyquist) จะทำให้การวิเคราะห์ทั้งหมดเสียหายอย่างเงียบๆ โค้ดไม่ได้ให้ข้อผิดพลาด แต่ให้ผลลัพธ์ที่ผิดเท่านั้น ในหน่วยนี้ เราจะครอบคลุมการตั้งค่าพารามิเตอร์ที่ถูกต้องด้วย AI การตรวจสอบโค้ดที่สร้างขึ้นในแง่ของ Nyquist และนามแฝง และการตรวจสอบการตีความสเปกตรัมด้วยความเป็นจริงทางกายภาพ
พารามิเตอร์พื้นฐาน: การสุ่มตัวอย่าง, Nyquist, นามแฝง
กฎข้อแรกของการประมวลผลสัญญาณดิจิทัลคือทฤษฎีบท Nyquist-Shannon: เพื่อให้แสดงสัญญาณได้อย่างถูกต้อง ความถี่ในการสุ่มตัวอย่างจะต้องมีอย่างน้อยสองเท่าขององค์ประกอบความถี่สูงสุดในสัญญาณ มิฉะนั้น ความถี่สูงจะปรากฏเป็นความถี่ต่ำ (นามแฝง) และไม่สามารถย้อนกลับได้
ความถี่สูงสุดในสัญญาณ: f_max = 2 kHz ความถี่ในการสุ่มตัวอย่างขั้นต่ำ: f_s ≥ 2 · f_max = 4 kHz หากต้องการเว้นระยะขอบในทางปฏิบัติ: เลือก f_s พรีเมี่ยม 5 · f_max = 10 kHz นอกจากนี้ ตัวกรองการลบรอยหยักแบบอะนาล็อกจะต้องก่อนการสุ่มตัวอย่าง
ข้อควรระวัง: เมื่อ AI แนะนำความถี่ในการสุ่มตัวอย่าง อย่าลืมตรวจสอบว่ามี Nyquist ตามองค์ประกอบสูงสุดของสัญญาณของคุณหรือไม่ รหัสทำงานโดยไม่มีข้อผิดพลาดแม้ที่ความถี่การสุ่มตัวอย่างต่ำ แต่ผลลัพธ์ผิดเนื่องจากนามแฝง นอกจากนี้ ไม่มีซอฟต์แวร์ใดสามารถยกเลิกข้อผิดพลาดนี้ได้หากไม่มีตัวกรองการป้องกันนามแฝงในฮาร์ดแวร์
ความละเอียดและหน้าต่างสำหรับ FFT
ความละเอียดความถี่ของ FFT ขึ้นอยู่กับความถี่ในการสุ่มตัวอย่างและจำนวนตัวอย่าง: Δf = f_s / N สำหรับความละเอียดที่ละเอียดยิ่งขึ้น คุณสามารถรวบรวมตัวอย่างเพิ่มเติมหรือเลือก f_s ที่ต่ำกว่า (โดยไม่ทำลาย Nyquist) นอกจากนี้ ความไม่ต่อเนื่องระหว่างจุดเริ่มต้นและจุดสิ้นสุดของสัญญาณทำให้เกิด "การรั่วไหลของสเปกตรัม"; เพื่อลดปัญหานี้ จึงมีการใช้ฟังก์ชันหน้าต่าง เช่น Hann และ Hamming
f_s = 10 kHz, N = 1,024 ตัวอย่าง ความละเอียดความถี่: Δf = 10,000 / 1024 data 9.77 Hz เวลาในการบันทึกทั้งหมด: T = N / f_s = 1024 / 10,000 data 102.4 ms
การสร้างและตรวจสอบ FFT และรหัสตัวกรอง
ระบุความถี่ในการสุ่มตัวอย่าง ประเภทหน้าต่าง และขนาดแกนอย่างชัดเจนเมื่อขอรหัส FFT จาก AI รหัสต่อไปนี้จะแสดงผลสเปกตรัมแอมพลิจูดด้านเดียวของสัญญาณ:
นำเข้าตัวเลขเป็น npfs = 10,000 # ความถี่การสุ่มตัวอย่าง (Hz) - ตรวจสอบ Nyquist!N = 1024t = np.arange(N) / fs# สัญญาณตัวอย่าง: 500 Hz + 1500 Hzx = np.sin(2*np.pi*500*t) + 0.5*np.sin(2*np.pi*1500*t)w = np.hanning(N) # windowing: ลดการรั่วไหลของสเปกตรัมที่ทำให้เป็นมาตรฐานโดยเกน # ตรวจสอบความถี่สูงสุดpeaks = f[np.argsort(mag)[-2:]]print("Dominant frequencies (Hz):", np.sort(peaks))
เมื่อตรวจสอบโค้ดนี้ คุณจะถูกถามว่า: แกนความถี่เป็น Hz จริงๆ หรือเป็นดัชนีตัวอย่าง (ใช้ rfftfreq) แอมพลิจูดถูกทำให้เป็นมาตรฐานกับอัตราขยายของหน้าต่างหรือไม่ จุดสูงสุดที่คาดหวัง 500 และ 1500 Hz เกิดขึ้นที่จุดเหล่านั้นจริงหรือ หากคุณตรวจสอบรหัสด้วยสัญญาณทดสอบที่ทราบ (ไซน์ความถี่เดียว) คุณจะยืนยันแกนและการปรับมาตรฐานได้อย่างมั่นใจ
พรอมต์ที่อ่อนแอ / พรอมต์ที่แข็งแกร่ง
อ่อนแอ:"ใช้ FFT กับข้อมูลนี้" (ผลลัพธ์: ความถี่ในการสุ่มตัวอย่าง สเกลแกน และการกำหนดหน้าต่างไม่ชัดเจน กราฟมีแนวโน้มว่าจะถูกพล็อตบนแกนที่ผิด) แข็งแกร่ง: "ใช้ FFT กับสัญญาณตัวอย่าง 10 kHz ให้:- พล็อตแกนความถี่เป็น Hz (ใช้ rfftfreq) - ใช้หน้าต่าง Hann และทำให้แอมพลิจูดเป็นมาตรฐานด้วยเกนของหน้าต่าง - พิมพ์ความถี่หลักทั้งสอง แบบดิจิทัล- ทำเครื่องหมายขีดจำกัด Nyquist (5 kHz) บนกราฟ โปรดทราบว่าแกนจะเปลี่ยนไปหากความถี่สุ่มตัวอย่างไม่ถูกต้อง"
การออกแบบตัวกรองและการวิเคราะห์สัญญาณรบกวน
AI สามารถสร้างค่าสัมประสิทธิ์ตัวกรองต่ำ/สูง/แบนด์พาส (FIR/IIR) แต่ต้องตรวจสอบความถี่ในการตัด ลำดับ และความเสถียรของตัวกรอง อาจทำให้เกิดความไม่เสถียรของลำดับและการบิดเบือนเฟสในระดับสูง โดยเฉพาะในตัวกรอง IIR หลังจากออกแบบตัวกรองแล้ว ให้พล็อตการตอบสนองความถี่ (เหมือน Bode) เพื่อดูว่าจุดตัดอยู่ในตำแหน่งที่ถูกต้อง และไม่มีระลอกคลื่นที่ไม่ต้องการในพาสแบนด์
งานทั่วไปในการวิเคราะห์สัญญาณรบกวนคือการแยกสัญญาณจริงออกจากสัญญาณรบกวน ที่นี่ ให้ประเมินเกณฑ์หรือตัวกรองที่แนะนำของ AI โดยเทียบกับแบนด์วิดท์ทางกายภาพของสัญญาณ: หากสัญญาณจริงของคุณอยู่ที่ 0-500 Hz ส่วนประกอบที่ 2 kHz มีแนวโน้มว่าจะมีสัญญาณรบกวนหรือการรบกวนมากที่สุด AI ให้สถิติ; คุณทำการตีความทางกายภาพ
การตรวจสอบการตีความสเปกตรัมด้วยความเป็นจริงทางกายภาพ
เมื่อตีความสเปกตรัม AI จะทำการอนุมานที่สมเหตุสมผลแต่ไม่ได้แม่นยำเสมอไป เช่น "มีจุดสูงสุดที่ 50 Hz นี่คือการรบกวนของกริด" เปรียบเทียบความคิดเห็นเหล่านี้กับความคาดหวังทางกายภาพ: ระบบมีการเชื่อมต่อหลัก 50 Hz จริงหรือไม่ ความถี่ในการหมุนและฮาร์โมนิคที่คาดหวังเกือบจะอยู่ในสเปกตรัมการสั่นสะเทือนของมอเตอร์หรือไม่? หากเป็นไปได้ ให้ทำการวัดซ้ำด้วยวิธีที่สอง (เซ็นเซอร์ต่างกัน ซอฟต์แวร์ต่างกัน) และดูจุดสูงสุดเดียวกัน
คำแนะนำ: สำหรับการตีความแต่ละสเปกตรัม "จุดสูงสุดนี้สอดคล้องกับปรากฏการณ์ทางกายภาพใด" ถามคำถาม. เครือข่าย 50/100/150 Hz และฮาร์โมนิค ความถี่ในการหมุนและทวีคูณในเครื่องจักรที่หมุน และความถี่ในการสลับในแหล่งจ่ายไฟแบบสวิตชิ่ง เป็นที่ทราบกันดีอยู่แล้ว จุดสูงสุดที่ไม่รู้จักอาจเป็นเหตุการณ์จริงหรือข้อผิดพลาดในการวัด/การประมวลผล วิจัยทั้งสองอย่าง
มินิเคส
วิศวกรฝ่าย R&D วัดการสั่นสะเทือนของพัดลมและให้ AI ตีความสเปกตรัม “มีจุดสูงสุดที่โดดเด่นที่ 1200 Hz นี่อาจเป็นเพราะความล้มเหลว” AI กล่าว วิศวกรควบคุมความเร็วของพัดลม: 1800 rpm = 30 Hz ความถี่การเปลี่ยนแบริ่งและใบมีดคาดว่าจะอยู่ที่ค่าที่แน่นอนที่เข้ากันได้กับรอบนี้ 1200 Hz ไม่สอดคล้องกับสิ่งเหล่านี้ ควบคุมความถี่ในการสุ่มตัวอย่าง: สัญญาณมีเนื้อหาสูงถึง 2 kHz แต่จะมีการสุ่มตัวอย่างเพียง 2 kHz ดังนั้นจึงถือเป็นการละเมิด Nyquist จุดสูงสุดที่ 1200 Hz คือความถี่โกสต์ที่เกิดจากนามแฝง เมื่อฉันเพิ่มความถี่สุ่มตัวอย่างเป็น 8 kHz จุดสูงสุดที่ผิดพลาดจะหายไป บทเรียน: ทดสอบการตีความสเปกตรัมด้วยรอบทางกายภาพ/ความถี่ที่คาดหวัง และการสุ่มตัวอย่างที่ถูกต้องเสมอ
ข้อผิดพลาดทั่วไป
- การเลือกความถี่ในการสุ่มตัวอย่างโดยไม่ตรวจสอบเกณฑ์ของ Nyquist มองข้ามนามแฝง
- ปล่อยแกนความถี่ FFT ไว้ที่ดัชนีตัวอย่างแทน Hz
- เข้าใจผิดว่าการรั่วไหลของสเปกตรัมเป็นสัญญาณที่ไม่มีหน้าต่าง
- ไม่ทำให้แอมพลิจูดเป็นปกติตามจำนวนหน้าต่าง/ตัวอย่าง
- ไม่ตรวจสอบความเสถียรของตัวกรอง IIR และการบิดเบือนเฟส
- การตีความจุดสูงสุดของสเปกตรัมโดยไม่ต้องทดสอบโดยคาดหวังถึงรอบต่อนาที/ความถี่ทางกายภาพ
โดยสรุป
- ความถี่ในการสุ่มตัวอย่างจะต้องมีอย่างน้อยสองเท่าของส่วนประกอบที่สูงที่สุดของสัญญาณ มิฉะนั้น นามแฝงจะรบกวนการวิเคราะห์ทั้งหมด
- ความละเอียด FFT Δf = f_s/N; เลือก N และ f_s ตามความต้องการของคุณ
- Windowing ช่วยลดการรั่วไหลของสเปกตรัม ทำให้แอมพลิจูดเป็นปกติตามอัตราขยายของหน้าต่าง
- ตรวจสอบรหัส AI ด้วยสัญญาณทดสอบที่ทราบเพื่อยืนยันแกนและการทำให้เป็นมาตรฐาน
- ตรวจสอบความเสถียรของตัวกรองและการตอบสนองความถี่โดยการวางแผน
- ทดสอบการตีความสเปกตรัมโดยคาดหวังความถี่ทางกายภาพเสมอ
งานสมัคร
สร้างสัญญาณทดสอบความถี่ที่ทราบ (เช่น 500 Hz + 1500 Hz ไซน์) ขอ FFT และรหัสตัวกรองจาก AI จากนั้น: (1) ตรวจสอบว่าเป็นไปตามเกณฑ์ของ Nyquist (2) ตรวจสอบว่าพีค FFT ปรากฏจริงที่ 500 และ 1500 เฮิร์ตซ์ (3) จงใจลดความถี่การสุ่มตัวอย่างให้ต่ำกว่า Nyquist และสังเกตว่าการใช้นามแฝงสร้างจุดสูงสุดปลอมได้อย่างไร สังเกตข้อสังเกตและพารามิเตอร์ที่คุณแก้ไข