การคำนวณอนุพันธ์


9

ฉันมีชุดข้อมูล (อาร์เรย์เดียว) หากฉันนำข้อมูลนี้มาใช้และทำการพล็อตมันฉันจะเห็นว่ามีหลายจุด อย่างไรก็ตามหากฉันซูมเข้าไปที่ส่วนของข้อมูลฉันเห็นว่ามีเสียงดังมาก

ฉันต้องการตรวจสอบจำนวนพีคของข้อมูลโดยใช้เวลา CPU และพลังงานเพียงเล็กน้อย ฉันคิดว่าจะตรวจสอบความลาดชันของยอดเขาเหล่านี้ (อาจจะคมชัดหรือราบเรียบขึ้นหรือลง) และดูที่จำนวนทางลาดเพื่อกำหนดจำนวนของยอดเขา (2 ลาดเชิงบวกและลบสำหรับทุกจุดสูงสุด)

ตัวชี้ใด ๆ ที่ฉันสามารถคำนวณความลาดชันเมื่อมีสัญญาณรบกวนได้อย่างไร

รหัสจะเข้าสู่ระบบฝังตัวหน่วยความจำมี จำกัด ดังนั้นโดยเฉพาะอย่างยิ่งฉันต้องการใช้สิ่งที่ไม่ต้องการคัดลอกข้อมูลที่สำคัญ


1
คุณฟังดูเหมือนในร้านค้าที่ขอสิ่งที่คุณต้องการ

2
หากสัญญาณรบกวนมีความถี่ค่อนข้างสูงคุณสามารถผ่านการกรองข้อมูลต่ำได้
Paul R

4
คุณสามารถโพสต์ตัวอย่างข้อมูลของคุณอย่างน้อยหนึ่งแปลงได้หรือไม่ ที่จะช่วยให้เราเห็นสิ่งที่ดูเหมือน การตรวจจับจุดสูงสุดนั้นมักจะไม่ได้ทำผ่านการประมาณค่าอนุพันธ์เนื่องจากการคำนวณอนุพันธ์ของสัญญาณนั้นมีความไวต่อสัญญาณรบกวนมาก (เป็นการดำเนินการด้วยความเร็วสูง) อาจมีลักษณะของสัญญาณที่คุณสามารถใช้ประโยชน์ได้ นอกจากนี้ยังมีข้อเสียอยู่เสมอระหว่างความน่าจะเป็นในการตรวจจับจุดสูงสุดและความน่าจะเป็นที่จะประกาศจุดสูงสุดที่ไม่น่าสนใจอย่างแท้จริง แอปพลิเคชันของคุณมีความสำคัญต่ออะไรมากกว่านี้?
Jason R

2
หากคุณสามารถสร้างพล็อตมันจะเป็นประโยชน์
Jason R

1
คุณต้องการตรวจหาจุดสูงสุดคุณอาจต้องการค้นหาการตรวจจับจุดสูงสุด (ดูที่dsp.stackexchange.com/questions/1302/peak-detection-approach )
Geerten

คำตอบ:


1

ขึ้นอยู่กับประเภทของเสียงและประเภทของสัญญาณ แสดงตัวอย่างถ้าคุณต้องการคำตอบที่ดี แต่โดยทั่วไปแล้วคุณอาจต้องการกรองสัญญาณความถี่ต่ำ ถ้าฉันเป็นคุณฉันจะใช้คลื่นความถี่ฟูริเยร์เพื่อดูว่าเสียงส่วนใหญ่เป็นความถี่สูงหรือไม่และสัญญาณที่ฉันสนใจส่วนใหญ่อยู่ในช่วงที่ต่ำกว่า หากพวกเขาทับซ้อนกันโอ้เป็นชีวิตที่ดี ฉันจะต้องคิดเพิ่มเติมเกี่ยวกับสิ่งต่าง ๆ

ตัวกรอง low-pass หนึ่งตัวที่ดีสำหรับสัญญาณรบกวนในหลาย ๆ กรณีคือตัวกรอง Savitzky-Golay มันอธิบายไว้ในสูตรตัวเลขและสำหรับ Python มีฟังก์ชั่นใน Python Numpy Cookbook มันเป็นเพียงการบิดด้วยเคอร์เนลขนาดเล็ก คุณเลือกขนาดหน้าต่างตามความกว้างของยอดเขาหรือคุณสมบัติอื่น ๆ กว้างพอที่จะขจัดเสียงรบกวน แต่ไม่กว้างกว่าคุณสมบัติ มันอาจจะเล็กพูดได้ห้าคะแนน

คุณยังเลือกคำสั่งพหุนาม - ปกติฉันใช้ 2 หรือ 4 คำสั่ง 2 ใช้ได้เมื่อหน้าต่างมีขนาดเล็ก <10 คะแนนหรือครอบคลุมรอบน้อยกว่าครึ่งรอบ (ถ้าสัญญาณของคุณคล้ายไซน์) ในขณะที่ลำดับ 4 คือ จับคู่รูปร่างที่บิดเบี้ยวได้ดีกว่า แต่ชอบที่จะมีประมาณ 9 คะแนนขึ้นไป แต่ขึ้นอยู่กับรูปร่างและความถี่ของเสียง

อย่างที่คนอื่นพูดในความคิดเห็นการค้นหาอนุพันธ์อาจไม่ใช่กลยุทธ์ที่ดีที่สุด แต่ถ้าคุณต้องการค้นหาอนุพันธ์ตัวกรอง Savitzky-Golay สามารถทำเช่นนั้นได้ - การปรับให้เรียบและรายงานอนุพันธ์แทนที่จะเป็นสัญญาณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.