เพื่อขยายคำตอบของMüller
- ควรวางไมโครโฟนในหลอดแยกเพื่อปรับปรุงการแยกหรือไม่
- ไม่คุณกำลังพยายามระบุทิศทางของแหล่งที่มาการเพิ่มหลอดจะทำให้เสียงตีกลับภายในหลอดที่ไม่ต้องการเท่านั้น
วิธีที่ดีที่สุดในการดำเนินการคือทำให้พวกเขาเผชิญหน้าโดยวิธีนี้พวกเขาทุกคนจะได้รับเสียงที่เหมือนกันและสิ่งเดียวที่เป็นเอกลักษณ์เกี่ยวกับพวกเขาคือตำแหน่งทางกายภาพของพวกเขาซึ่งจะส่งผลโดยตรงต่อระยะ คลื่นไซน์ 6 kHz มีความยาวคลื่น{} ดังนั้นหากคุณต้องการระบุขั้นตอนของคลื่นไซน์ที่ไม่ซ้ำกันสูงสุด 6 kHz ซึ่งเป็นความถี่ทั่วไปสำหรับการพูดคุยของมนุษย์คุณควรวางไมโครโฟนไว้ห่างกันมากที่สุด 5.71 มม. นี่คือหนึ่งรายการความเร็วของเสียงความถี่เสียง=343 m / s6 kHz= 5.71 มมที่มีเส้นผ่าศูนย์กลางน้อยกว่า 5.71 มม. อย่าลืมเพิ่มตัวกรองความถี่ต่ำผ่านความถี่ตัดที่ประมาณ 6-10 kHz
แก้ไข
ฉันรู้สึกว่าคำถาม # 2 นี้ดูสนุกฉันจึงตัดสินใจลองแก้ปัญหาด้วยตัวเอง
- สามารถคำนวณความสัมพันธ์ของเฟสระหว่าง 3 แหล่งพร้อมกันได้หรือไม่? (เช่นเพื่อเร่งการคำนวณ)
ถ้าคุณรู้ว่าพีชคณิตเชิงเส้นของคุณแล้วคุณสามารถจินตนาการว่าคุณได้วางไมโครโฟนในรูปสามเหลี่ยมที่แต่ละไมโครโฟนคือ 4 มมออกจากกันทำให้คนอื่น ๆ ภายในมุม6060 °
ดังนั้นสมมติว่าพวกเขาอยู่ในการกำหนดค่านี้:
C
/ \
/ \
/ \
/ \
/ \
A - - - - - B
ฉันจะ...
- ใช้ระบบการตั้งชื่อซึ่งเป็นเวกเตอร์ที่ชี้จากถึงB¯¯¯¯¯¯¯¯AB
- โทรกำเนิดของฉันA
- เขียนตัวเลขทั้งหมดเป็นมม
- ใช้คณิตศาสตร์ 3D แต่จบลงด้วยทิศทาง 2D
- ตั้งตำแหน่งแนวตั้งของไมโครโฟนเป็นรูปคลื่นจริง ดังนั้นสมการเหล่านี้จะขึ้นอยู่กับเสียงคลื่นที่มีลักษณะคล้ายนี้
- คำนวณครอสโปรดักท์ของไมโครโฟนเหล่านี้ตามตำแหน่งและรูปแบบของคลื่นแล้วละเว้นข้อมูลความสูงจากผลิตภัณฑ์ครอสนี้และใช้ arctan เพื่อหาทิศทางที่แท้จริงของแหล่งกำเนิด
- โทรการส่งออกของไมโครโฟนที่ตำแหน่งโทรการส่งออกของไมโครโฟนที่ตำแหน่งโทรการส่งออกของไมโครโฟนที่ตำแหน่งaAขBคค
ดังนั้นสิ่งต่อไปนี้เป็นจริง:
- A = ( 0 , 0 , a )
- B = ( 4 , 0 , b )
- ค= ( 2 ,42-22------√= 23-√, c )
สิ่งนี้ทำให้เรา:
- B¯¯¯¯¯¯¯¯= ( 4 , 0 , a - b )
- C¯¯¯¯¯¯¯¯= ( 2 , 2)3-√, - ค)
และผลิตภัณฑ์ครอสคือB¯¯¯¯¯¯¯¯×C¯¯¯¯¯¯¯¯
B¯¯¯¯¯¯¯¯×C¯¯¯¯¯¯¯¯=⎛⎝⎜40a - b⎞⎠⎟×⎛⎝⎜223-√a - c⎞⎠⎟=⎛⎝⎜0 ⋅ ( a - c ) - ( a - b ) ⋅ 23-√( a - b ) ⋅ 2 - 4 ⋅ ( a - c )4 ⋅ 23-√- 0 ⋅ 2⎞⎠⎟=⎛⎝⎜23-√( b - a )- 2 a - 2 b - 4 c83-√⎞⎠⎟
ข้อมูล Z,เป็นเพียงขยะไม่มีดอกเบี้ยสำหรับเรา ในขณะที่สัญญาณอินพุตกำลังเปลี่ยนแปลง Cross vector จะแกว่งไปมาไปทางต้นทาง ดังนั้นครึ่งหนึ่งของเวลามันจะชี้ตรงไปยังแหล่งที่มา (ไม่สนใจการสะท้อนและปรสิตอื่น ๆ ) และอีกครึ่งหนึ่งของเวลามันจะชี้ 180 องศาห่างจากแหล่งที่มา83-√
สิ่งที่ฉันกำลังพูดถึงคือซึ่งสามารถทำให้เป็นจากนั้นเปลี่ยนเรเดียนเป็นองศาarctan(- 2 a - 2 b - 4 c23√( b - a ))arctan(a + b + 2 c3√( a - b ))
ดังนั้นสิ่งที่คุณจะได้คือสมการต่อไปนี้:
arctan(a + b + 2 c3-√( a - b ))180π
แต่ครึ่งหนึ่งของเวลาที่ข้อมูลผิดอย่างแท้จริง 100% ดังนั้น .. ควรจะทำอย่างไรให้ถูกต้อง 100% ของเวลา?
ทีนี้ถ้านำหน้าแหล่งที่มาจะไม่สามารถใกล้กับ B ได้aข
พูดง่ายๆก็คือทำอะไรง่ายๆแบบนี้
source_direction=atan2(a+b+2c,\sqrt{3}*(a-b))*180/pi;
if(a>b){
if(b>c){//a>b>c
possible_center_direction=240; //A is closest, then B, last C
}else if(a>c){//a>c>b
possible_center_direction=180; //A is closest, then C last B
}else{//c>a>b
possible_center_direction=120; //C is closest, then A last B
}
}else{
if(c>b){//c>b>a
possible_center_direction=60; //C is closest, then B, last A
}else if(a>c){//b>a>c
possible_center_direction=300; //B is closest, then A, last C
}else{//b>c>a
possible_center_direction=0; //B is closest, then C, last A
}
}
//if the source is out of bounds, then rotate it by 180 degrees.
if((possible_center_direction+60)<source_direction){
if(source_direction<(possible_center_direction-60)){
source_direction=(source_direction+180)%360;
}
}
และบางทีคุณอาจต้องการที่จะตอบสนองถ้าแหล่งกำเนิดเสียงมาจากมุมในแนวตั้งเฉพาะหากผู้คนพูดคุยเหนือไมโครโฟน => 0 phase change => ไม่ทำอะไรเลย ผู้คนกำลังพูดคุยในแนวนอนถัดจากมัน => การเปลี่ยนเฟสบางอย่าง => ตอบสนอง
| P|=P2x+P2Y-------√=3 ( a - b)2+ ( a + b + 2 c)2-------------------√
ดังนั้นคุณอาจต้องการตั้งค่าขีด จำกัด นั้นให้อยู่ในระดับต่ำเช่น 0.1 หรือ 0.01 ฉันไม่แน่ใจทั้งหมดขึ้นอยู่กับปริมาณและความถี่และปรสิตทดสอบด้วยตัวเอง
อีกเหตุผลหนึ่งที่เมื่อใช้สมการค่าสัมบูรณ์สำหรับการข้ามศูนย์อาจมีช่วงเวลาเล็กน้อยเมื่อทิศทางจะชี้ไปในทิศทางที่ผิด แม้ว่ามันจะเป็นเพียง 1% ของเวลาถ้าเป็นเช่นนั้น ดังนั้นคุณอาจต้องการแนบตัวกรอง LP อันดับแรกไปยังทิศทาง
true_true_direction = true_true_direction*0.9+source_direction*0.1;
และถ้าคุณต้องการที่จะตอบสนองกับระดับเสียงที่เฉพาะเจาะจงเพียงรวมไมโครโฟน 3 ตัวเข้าด้วยกันแล้วเปรียบเทียบกับค่าทริกเกอร์ ค่าเฉลี่ยของไมโครโฟนจะเป็นผลรวมของพวกเขาหารด้วย 3 แต่คุณไม่จำเป็นต้องหารด้วย 3 หากคุณเพิ่มค่าทริกเกอร์ด้วยปัจจัย 3
ฉันมีปัญหาเกี่ยวกับการทำเครื่องหมายรหัสเป็น C / C # / C ++ หรือ JS หรืออื่น ๆ ดังนั้นน่าเสียดายที่รหัสจะเป็นสีดำบนพื้นขาวกับความต้องการของฉัน โอ้ขอให้โชคดีในการเสี่ยงของคุณ ฟังดูน่าสนุก.
นอกจากนี้ยังมีโอกาส 50/50 ที่ทิศทางจะอยู่ห่างจากแหล่งกำเนิด 180% ของเวลา ฉันเป็นอาจารย์ที่ทำผิดพลาด การแก้ไขสำหรับสิ่งนี้แม้ว่าจะเป็นการกลับคำสั่ง if สำหรับเวลาที่ควรเพิ่ม 180 องศา