พิจารณาสัญญาณรูปคลื่นที่ 4 ต่อไปนี้:
signal1 = [4.1880 11.5270 55.8612 110.6730 146.2967 145.4113 104.1815 60.1679 14.3949 -53.7558 -72.6384 -88.0250 -98.4607]
signal2 = [ -39.6966 44.8127 95.0896 145.4097 144.5878 95.5007 61.0545 47.2886 28.1277 -40.9720 -53.6246 -63.4821 -72.3029 -74.8313 -77.8124]
signal3 = [-225.5691 -192.8458 -145.6628 151.0867 172.0412 172.5784 164.2109 160.3817 164.5383 171.8134 178.3905 180.8994 172.1375 149.2719 -51.9629 -148.1348 -150.4799 -149.6639]
signal4 = [ -218.5187 -211.5729 -181.9739 -144.8084 127.3846 162.9755 162.6934 150.8078 145.8774 156.9846 175.2362 188.0448 189.4951 175.9540 147.4631 -89.9513 -154.1579 -151.0851]
เราสังเกตว่าสัญญาณ 1 และ 2 ดูคล้ายกันและสัญญาณ 3 และ 4 นั้นคล้ายกัน
ฉันกำลังมองหาอัลกอริทึมที่ใช้เป็นสัญญาณอินพุทและแบ่งพวกมันออกเป็นกลุ่ม m โดยที่สัญญาณภายในแต่ละกลุ่มคล้ายกัน
ขั้นตอนแรกในขั้นตอนวิธีการดังกล่าวมักจะมีการคำนวณเวกเตอร์คุณลักษณะสำหรับแต่ละสัญญาณ: \
ตัวอย่างเช่นเราอาจกำหนดให้เวกเตอร์คุณลักษณะเป็น: [width, max, max-min] ในกรณีนี้เราจะได้รับคุณสมบัติของเวกเตอร์ดังต่อไปนี้:
สิ่งสำคัญเมื่อตัดสินใจเลือกฟีเจอร์เวกเตอร์คือสัญญาณที่คล้ายกันจะได้รับฟีเจอร์เวกเตอร์ที่อยู่ใกล้กันและสัญญาณที่ต่างกันจะได้รับเวกเตอร์ฟีเจอร์ที่อยู่ห่างกัน
ในตัวอย่างข้างต้นเราจะได้รับ:
ดังนั้นเราจึงสรุปได้ว่าสัญญาณ 2 นั้นคล้ายคลึงกับสัญญาณ 1 มากกว่าสัญญาณ 3 มาก
ในฐานะที่เป็นคุณสมบัติเวกเตอร์ฉันอาจใช้เงื่อนไขจากการแปลงโคไซน์ไม่ต่อเนื่องของสัญญาณ รูปด้านล่างแสดงสัญญาณพร้อมกับการประมาณของสัญญาณโดย 5 คำแรกจากการแปลงโคไซน์แบบแยก:
สัมประสิทธิ์โคไซน์ไม่ต่อเนื่องในกรณีนี้คือ:
F1 = [94.2496 192.7706 -211.4520 -82.8782 11.2105]
F2 = [61.7481 230.3206 -114.1549 -129.2138 -65.9035]
F3 = [182.2051 18.6785 -595.3893 -46.9929 -236.3459]
F4 = [148.6924 -171.0035 -593.7428 16.8965 -223.8754]
ในกรณีนี้เราจะได้รับ:
อัตราส่วนไม่ค่อนข้างใหญ่เท่ากับเวกเตอร์คุณลักษณะที่เรียบง่ายด้านบน นี่หมายความว่าเวกเตอร์คุณลักษณะที่ง่ายกว่าดีกว่าหรือ
จนถึงตอนนี้ฉันได้แสดงรูปคลื่นเพียง 2 รูปเท่านั้น เนื้อเรื่องด้านล่างแสดงรูปคลื่นอื่น ๆ ที่อาจเป็นสัญญาณเข้าสู่อัลกอริธึมดังกล่าว สัญญาณหนึ่งจะถูกดึงออกมาจากแต่ละจุดสูงสุดในพล็อตนี้เริ่มต้นที่นาทีที่ใกล้ที่สุดไปทางซ้ายของจุดสูงสุดและหยุดที่นาทีที่ใกล้ที่สุดไปทางขวาของจุดสูงสุด:
ตัวอย่างเช่น signal3 ถูกดึงออกมาจากพล็อตนี้ระหว่างตัวอย่างที่ 217 และ 234 สัญญาณที่ 4 ถูกแยกออกมาจากพล็อตอื่น
ในกรณีที่คุณอยากรู้ แต่ละแปลงดังกล่าวสอดคล้องกับการวัดเสียงโดยไมโครโฟนที่ตำแหน่งต่าง ๆ ในพื้นที่ ไมโครโฟนแต่ละตัวจะรับสัญญาณเหมือนกัน แต่สัญญาณจะถูกเลื่อนเล็กน้อยในเวลาและบิดเบือนจากไมโครโฟนไปยังไมโครโฟน
คุณสมบัติเวกเตอร์สามารถส่งไปยังอัลกอริทึมการจัดกลุ่มเช่น k- หมายถึงที่จะรวมกลุ่มสัญญาณด้วยเวกเตอร์คุณสมบัติใกล้กัน
มีใครบ้างไหมที่มีประสบการณ์ / คำแนะนำในการออกแบบเวกเตอร์ฟีเจอร์ที่สามารถแยกแยะสัญญาณรูปคลื่นได้หรือไม่?
อัลกอริทึมการจัดกลุ่มที่คุณจะใช้ด้วย
ขอบคุณล่วงหน้าสำหรับคำตอบ!