มีอัลกอริธึมอะไรบ้างในการสร้างการประมาณแบบหลอกเทียมที่ดีสำหรับเสียง (สีชมพู) แต่เหมาะสำหรับการนำไปใช้งานด้วยต้นทุนการคำนวณที่ต่ำใน DSP จำนวนเต็ม?
มีอัลกอริธึมอะไรบ้างในการสร้างการประมาณแบบหลอกเทียมที่ดีสำหรับเสียง (สีชมพู) แต่เหมาะสำหรับการนำไปใช้งานด้วยต้นทุนการคำนวณที่ต่ำใน DSP จำนวนเต็ม?
คำตอบ:
มีหลายแบบด้วยกัน ไซต์นี้มีรายการที่สมเหตุสมผล (แต่อาจเก่า):
การกรองเชิงเส้น
วิธีแรกในคำตอบของปีเตอร์ (เช่นการกรองสัญญาณรบกวนสีขาว) เป็นวิธีการที่ตรงไปตรงมามาก ในการประมวลผลสัญญาณเสียงสเปกตรัม JOS ให้ตัวกรองลำดับต่ำที่สามารถใช้ในการสร้างการประมาณที่เหมาะสมพร้อมกับการวิเคราะห์ว่าความหนาแน่นของสเปกตรัมพลังงานที่เกิดขึ้นนั้นเหมาะสมกับอุดมคติเพียงใด การกรองแบบเชิงเส้นจะให้ผลการประมาณค่าเสมอ แต่อาจไม่สำคัญในทางปฏิบัติ ในการถอดความ JOS:
ไม่มีตัวกรอง (เหตุผล, ลำดับ จำกัด ) ที่แน่นอนซึ่งสามารถสร้างเสียงสีชมพูจากเสียงสีขาวได้ นี่เป็นเพราะการตอบสนองของแอมพลิจูดในอุดมคติของตัวกรองจะต้องเป็นสัดส่วนกับฟังก์ชันที่ไม่มีเหตุผล โดยที่หมายถึงความถี่ในเฮิร์ตซ์ อย่างไรก็ตามมันง่ายพอที่จะสร้างเสียงสีชมพูในระดับที่ต้องการประมาณใด ๆ รวมถึงการรับรู้ที่แม่นยำฉ
สัมประสิทธิ์ของตัวกรองที่เขาให้มีดังนี้:
B = [0.049922035, -0.095993537, 0.050612699, -0.004408786];
A = [1, -2.494956002, 2.017265875, -0.522189400];
พวกเขากำลังจัดรูปแบบเป็นพารามิเตอร์ให้กับฟังก์ชั่นตัวกรอง MATLABดังนั้นเพื่อความชัดเจนจึงสอดคล้องกับฟังก์ชั่นการถ่ายโอนต่อไปนี้:
เห็นได้ชัดว่ามันเป็นการดีกว่าที่จะใช้สัมประสิทธิ์ความแม่นยำเต็มรูปแบบในทางปฏิบัติ นี่คือลิงก์ไปยังสิ่งที่เสียงสีชมพูสร้างขึ้นโดยใช้ตัวกรองดังกล่าวมีลักษณะดังนี้:
สำหรับการใช้งานแบบตายตัวเนื่องจากมักจะสะดวกในการทำงานกับค่าสัมประสิทธิ์ในช่วง [-1,1) ฟังก์ชั่นการถ่ายโอนบางฟังก์ชั่นจะเป็นไปตามลำดับ โดยทั่วไปคำแนะนำคือการแบ่งสิ่งออกเป็นส่วนที่สองลำดับแต่ส่วนหนึ่งของเหตุผลสำหรับการที่ (เมื่อเทียบกับการใช้ส่วนที่สั่งซื้อครั้งแรก) เพื่อความสะดวกในการทำงานกับสัมประสิทธิ์จริงเมื่อรากมีความซับซ้อน สำหรับตัวกรองนี้โดยเฉพาะรากทั้งหมดเป็นของจริงและการรวมเข้าไปในส่วนลำดับที่สองอาจจะยังคงให้ค่าสัมประสิทธิ์ตัวหาร> 1 ดังนั้นส่วนลำดับที่สามอันดับแรกจึงเป็นทางเลือกที่สมเหตุสมผลดังนี้:
ที่ไหน
a 1 = 0.99516897 , a 2 = 0.94384177 , a 3 = 0.55594526
ทางเลือกที่มีเหตุผลในการจัดลำดับสำหรับส่วนเหล่านั้นรวมกับตัวเลือกปัจจัยการรับบางส่วนในแต่ละส่วนจะต้องมีการป้องกันการล้น ฉันไม่ได้ลองตัวกรองอื่นใดที่ระบุในลิงก์ในคำตอบของปีเตอร์แต่อาจมีการพิจารณาที่คล้ายกัน
เสียงสีขาว
เห็นได้ชัดว่าวิธีการกรองต้องมีแหล่งที่มาของตัวเลขสุ่มสม่ำเสมอตั้งแต่แรก หากมีห้องสมุดประจำไม่สามารถใช้ได้สำหรับแพลตฟอร์มที่กำหนดซึ่งเป็นหนึ่งในวิธีการที่ง่ายที่สุดคือการใช้เส้นตรง congruential กำเนิด ตัวอย่างหนึ่งของการดำเนินการแก้ไขจุดที่มีประสิทธิภาพจะได้รับโดย TI ในการสร้างจำนวนสุ่มบน TMS320C5x (PDF) การอภิปรายเชิงทฤษฎีอย่างละเอียดเกี่ยวกับวิธีการอื่น ๆ สามารถพบได้ในวิธีการสร้างตัวเลขสุ่มและวิธีมอนติคาร์โลโดย James Gentle
ทรัพยากร
แหล่งข้อมูลหลายแห่งซึ่งอิงตามลิงก์ต่อไปนี้ในคำตอบของปีเตอร์เป็นไฮไลต์ที่คุ้มค่า
อันแรกของการอ้างอิงรหัสตัวกรองเบื้องต้นเกี่ยวกับการประมวลผลสัญญาณโดย Orfanidis ข้อความเต็มมีอยู่ที่ลิงค์นั้นและ [ในภาคผนวก B] มีเนื้อหาครอบคลุมทั้งเสียงสีชมพูและสีขาว ในขณะที่ความคิดเห็นกล่าวถึง Orfanidis ส่วนใหญ่ครอบคลุมอัลกอริทึม Voss
สเปกตรัมผลิตโดยเสียงรบกวนโวคาร์ทสีชมพูปั่นไฟ ทางลงบริเวณด้านล่างของหน้าหลังจากการอภิปรายอย่างกว้างขวางของสายพันธุ์ของอัลกอริทึมโวลิงก์นี้มีการอ้างอิงในจดหมายยักษ์สีชมพู มันง่ายกว่าการอ่านมากกว่าแผนภาพ ASCII ก่อนหน้า
บรรณานุกรมเมื่อวันที่ 1 / f เสียงรบกวนโดย Wentian Li นี่คือการอ้างอิงทั้งในแหล่งที่มาของปีเตอร์และโดย JOS มันมีหมายเลขอ้างอิงหวือหวาใน 1 / f เสียงรบกวนโดยทั่วไปย้อนหลังไปถึงปี 1918
ฉันใช้อัลกอริธึมของ Corsini และ Saletti มาตั้งแต่ปี 2533: G. Corsini, R. Saletti, "A 1 / f ^ gamma Power Spectrum Noise Sequence Generator", ธุรกรรม IEEE เกี่ยวกับการใช้เครื่องมือและการวัด, 37 (4), ธันวาคม, 1988, 615 -619 เลขชี้กำลังแกมม่าอยู่ระหว่าง -2 ถึง +2 มันทำงานได้ดีสำหรับวัตถุประสงค์ของฉัน เอ็ด
หากความพยายามในการเพิ่มภาพหน้าจอทำงานได้รูปด้านล่างแสดงตัวอย่างว่าอัลกอรึทึม Corsini และ Saletti ทำงานได้ดีเพียงใด (อย่างน้อยเมื่อฉันตั้งโปรแกรมไว้ในปี 1990) ความถี่ในการสุ่มตัวอย่างคือ 1 kHz, gamma = 1, และ 1,000 32k FFT PSDs โดยเฉลี่ย
นี่เป็นไปตามโพสต์ก่อนหน้าของฉันในเครื่องกำเนิดเสียง Corsini และ Saletti (C&S) สองร่างถัดไปแสดงให้เห็นว่าเครื่องกำเนิดไฟฟ้า C&S ทำงานได้ดีเพียงใดในการสร้างเสียงความถี่ต่ำ (แกมม่า> 0) และเสียงความถี่สูง (แกมมา <0) เสียง รูปที่สามเปรียบเทียบ PSDs เสียง 1 / f ของตัวกำเนิด C&S (เหมือนกับโพสต์แรกของฉัน) และตัวกำเนิดตัวอย่าง B.9 1 / f ที่กำหนดในหนังสือยอดเยี่ยมของศาสตราจารย์ Orfanidis (eqn B.29, p. 736) PSDs ทั้งหมดนี้เป็นค่าเฉลี่ยของ PSD FFT 1000 32k พวกเขาทั้งหมดข้างเดียวและลบค่าเฉลี่ย สำหรับ C&S PSDs ฉันใช้ 3 เสา / ทศวรรษและระบุ 4 ทศวรรษ (0.05 ถึง 500 Hz) เป็นช่วงที่ต้องการ ดังนั้นตัวสร้าง C&S จึงมีขั้ว n = 12 และศูนย์คู่ ความถี่การสุ่มตัวอย่างคือ 1 kHz, Nyquist คือ 500 Hz และองค์ประกอบความละเอียดมีค่ามากกว่า 0.0305 Hz เอ็ด
ตามที่ Corsini & Saletti ระบุไว้ในกระดาษโดยที่คือความถี่การสุ่มตัวอย่างและคือ“ ขีด จำกัด สูงสุดของย่านความถี่ที่เราจะสร้างตัวอย่างเสียง” สัมประสิทธิ์ตัวกรองดิจิตอลได้รับจากสมการของพวกเขา (5.1):
ที่ c = 1. การขอรับ C & S PSDs เช่นเดียวกับที่แสดงไว้ข้างต้นให้ c = 0 และ0.5f_c