การสร้างเสียงรบกวนแบบหลอกหลอกสีชมพู ( )


20

มีอัลกอริธึมอะไรบ้างในการสร้างการประมาณแบบหลอกเทียมที่ดีสำหรับเสียง (สีชมพู) แต่เหมาะสำหรับการนำไปใช้งานด้วยต้นทุนการคำนวณที่ต่ำใน DSP จำนวนเต็ม?1/f


แล้วความทรงจำล่ะ ถ้านั่นไม่ใช่สิ่งที่น่ากังวล แต่การคำนวณคือฉันจะทำ iDFT แบบสุ่มเฟสของเส้นโค้งความถี่ที่ต้องการแล้วบันทึกเป็นคลื่นคงที่ const ในอุปกรณ์ของคุณ
leftaroundabout

@leftaroundabout - หรือจะทวีคูณ DFT ของเสียงสีขาวแบบสุ่มด้วยเส้นโค้งความถี่ 1 / f จากนั้นการทำ IDFT จะมีลักษณะการสุ่มที่ดีขึ้นหรือไม่
hotpaw2

1
เสียงสีขาวนั้นเป็นฟังก์ชั่นคงที่แบบสุ่มเฟส iFT ดังนั้นจึงไม่ควรสร้างความแตกต่างมากนัก
leftaroundabout

คำตอบ:


11

มีหลายแบบด้วยกัน ไซต์นี้มีรายการที่สมเหตุสมผล (แต่อาจเก่า):


6
หากไซต์นั้นตอบคำถามของคุณหายไปหากคุณต้องนำเสนอพื้นฐานของโซลูชันแต่ละคำตอบนั้นจะดีขึ้นมากโดยใช้ไซต์เป็นข้อมูลอ้างอิง
Kortuk

@Kortuk: คำตอบคือ wiki ชุมชนดังนั้นโปรดทำด้วยตัวเอง! ข้อมูลควรมีเพียงพอที่จะชี้ไปที่การอ้างอิงเว็บอื่น ๆ (เช่นคำตอบของนักดาต้าสำหรับตัวเลือกแรก) ฉันเห็นด้วยแม้ว่ารายละเอียดเพิ่มเติมจะเป็นสิ่งที่ดี
Peter K.

20

การกรองเชิงเส้น

วิธีแรกในคำตอบของปีเตอร์ (เช่นการกรองสัญญาณรบกวนสีขาว) เป็นวิธีการที่ตรงไปตรงมามาก ในการประมวลผลสัญญาณเสียงสเปกตรัม JOS ให้ตัวกรองลำดับต่ำที่สามารถใช้ในการสร้างการประมาณที่เหมาะสมพร้อมกับการวิเคราะห์ว่าความหนาแน่นของสเปกตรัมพลังงานที่เกิดขึ้นนั้นเหมาะสมกับอุดมคติเพียงใด การกรองแบบเชิงเส้นจะให้ผลการประมาณค่าเสมอ แต่อาจไม่สำคัญในทางปฏิบัติ ในการถอดความ JOS:

ไม่มีตัวกรอง (เหตุผล, ลำดับ จำกัด ) ที่แน่นอนซึ่งสามารถสร้างเสียงสีชมพูจากเสียงสีขาวได้ นี่เป็นเพราะการตอบสนองของแอมพลิจูดในอุดมคติของตัวกรองจะต้องเป็นสัดส่วนกับฟังก์ชันที่ไม่มีเหตุผล โดยที่หมายถึงความถี่ในเฮิร์ตซ์ อย่างไรก็ตามมันง่ายพอที่จะสร้างเสียงสีชมพูในระดับที่ต้องการประมาณใด ๆ รวมถึงการรับรู้ที่แม่นยำ1/ff

สัมประสิทธิ์ของตัวกรองที่เขาให้มีดังนี้:

B = [0.049922035, -0.095993537, 0.050612699, -0.004408786];
A = [1, -2.494956002, 2.017265875, -0.522189400];

พวกเขากำลังจัดรูปแบบเป็นพารามิเตอร์ให้กับฟังก์ชั่นตัวกรอง MATLABดังนั้นเพื่อความชัดเจนจึงสอดคล้องกับฟังก์ชั่นการถ่ายโอนต่อไปนี้:

H(z)=.041.096z1+.051z2.004z312.495z1+2.017z2.522z3

เห็นได้ชัดว่ามันเป็นการดีกว่าที่จะใช้สัมประสิทธิ์ความแม่นยำเต็มรูปแบบในทางปฏิบัติ นี่คือลิงก์ไปยังสิ่งที่เสียงสีชมพูสร้างขึ้นโดยใช้ตัวกรองดังกล่าวมีลักษณะดังนี้:

สำหรับการใช้งานแบบตายตัวเนื่องจากมักจะสะดวกในการทำงานกับค่าสัมประสิทธิ์ในช่วง [-1,1) ฟังก์ชั่นการถ่ายโอนบางฟังก์ชั่นจะเป็นไปตามลำดับ โดยทั่วไปคำแนะนำคือการแบ่งสิ่งออกเป็นส่วนที่สองลำดับแต่ส่วนหนึ่งของเหตุผลสำหรับการที่ (เมื่อเทียบกับการใช้ส่วนที่สั่งซื้อครั้งแรก) เพื่อความสะดวกในการทำงานกับสัมประสิทธิ์จริงเมื่อรากมีความซับซ้อน สำหรับตัวกรองนี้โดยเฉพาะรากทั้งหมดเป็นของจริงและการรวมเข้าไปในส่วนลำดับที่สองอาจจะยังคงให้ค่าสัมประสิทธิ์ตัวหาร> 1 ดังนั้นส่วนลำดับที่สามอันดับแรกจึงเป็นทางเลือกที่สมเหตุสมผลดังนี้:

H(z)=1b1z11a1z1 1b2z11a2z1 1b3z11a3z1

ที่ไหน

a 1 = 0.99516897 , a 2 = 0.94384177 , a 3 = 0.55594526

b1=0.98223157, b2=0.83265661, b3=0.10798089
a1=0.99516897, a2=0.94384177, a3=0.55594526

ทางเลือกที่มีเหตุผลในการจัดลำดับสำหรับส่วนเหล่านั้นรวมกับตัวเลือกปัจจัยการรับบางส่วนในแต่ละส่วนจะต้องมีการป้องกันการล้น ฉันไม่ได้ลองตัวกรองอื่นใดที่ระบุในลิงก์ในคำตอบของปีเตอร์แต่อาจมีการพิจารณาที่คล้ายกัน

เสียงสีขาว

เห็นได้ชัดว่าวิธีการกรองต้องมีแหล่งที่มาของตัวเลขสุ่มสม่ำเสมอตั้งแต่แรก หากมีห้องสมุดประจำไม่สามารถใช้ได้สำหรับแพลตฟอร์มที่กำหนดซึ่งเป็นหนึ่งในวิธีการที่ง่ายที่สุดคือการใช้เส้นตรง congruential กำเนิด ตัวอย่างหนึ่งของการดำเนินการแก้ไขจุดที่มีประสิทธิภาพจะได้รับโดย TI ในการสร้างจำนวนสุ่มบน TMS320C5x (PDF) การอภิปรายเชิงทฤษฎีอย่างละเอียดเกี่ยวกับวิธีการอื่น ๆ สามารถพบได้ในวิธีการสร้างตัวเลขสุ่มและวิธีมอนติคาร์โลโดย James Gentle

ทรัพยากร

แหล่งข้อมูลหลายแห่งซึ่งอิงตามลิงก์ต่อไปนี้ในคำตอบของปีเตอร์เป็นไฮไลต์ที่คุ้มค่า

  • อันแรกของการอ้างอิงรหัสตัวกรองเบื้องต้นเกี่ยวกับการประมวลผลสัญญาณโดย Orfanidis ข้อความเต็มมีอยู่ที่ลิงค์นั้นและ [ในภาคผนวก B] มีเนื้อหาครอบคลุมทั้งเสียงสีชมพูและสีขาว ในขณะที่ความคิดเห็นกล่าวถึง Orfanidis ส่วนใหญ่ครอบคลุมอัลกอริทึม Voss

  • สเปกตรัมผลิตโดยเสียงรบกวนโวคาร์ทสีชมพูปั่นไฟ ทางลงบริเวณด้านล่างของหน้าหลังจากการอภิปรายอย่างกว้างขวางของสายพันธุ์ของอัลกอริทึมโวลิงก์นี้มีการอ้างอิงในจดหมายยักษ์สีชมพู มันง่ายกว่าการอ่านมากกว่าแผนภาพ ASCII ก่อนหน้า

  • บรรณานุกรมเมื่อวันที่ 1 / f เสียงรบกวนโดย Wentian Li นี่คือการอ้างอิงทั้งในแหล่งที่มาของปีเตอร์และโดย JOS มันมีหมายเลขอ้างอิงหวือหวาใน 1 / f เสียงรบกวนโดยทั่วไปย้อนหลังไปถึงปี 1918


มีความคิดอย่างไรว่าเขาเกิดสัมประสิทธิ์ตัวกรองเหล่านี้ขึ้นมาได้อย่างไร? ฉันเดาว่ามันเป็นแบบไม่เชิงเส้นพอดีกับความชันที่ต้องการ แต่ฉันค่อนข้างสนใจที่จะทราบว่ามีอัลกอริทึมเฉพาะเจาะจงมากขึ้นหรือไม่
nibot

เดาที่ดีที่สุดของฉันจะเป็นหนึ่งในเทคนิคการประมาณที่กล่าวถึงในของเขาวิทยานิพนธ์ มันเป็นการอ่านที่ยอดเยี่ยมทั้งสองทาง
เก็บข้อมูล

ว้าวนั่นเป็นเอกสารทีเดียว! ขอบคุณสำหรับลิงค์
nibot

1
ปัญหาเกี่ยวกับวิธีการกรองสัญญาณรบกวนสีขาวคือคุณไม่ได้รับความสัมพันธ์ของเฟสขนาดเดียวกับที่คุณทำกับอนุกรมเวลาที่สัมพันธ์กันโดยอัตโนมัติ ดังนั้นหากคุณพยายามเลียนแบบกระบวนการทางธรรมชาติคุณไม่ควรสร้างเสียงสีขาวและกรองมัน คุณควรสร้างเสียงที่เกี่ยวข้องโดยอัตโนมัติเป็นอนุกรมเวลาเช่นค่าปัจจุบันขึ้นอยู่กับค่าก่อนหน้า + เสียงรบกวน ดูในกระบวนการ "AR" สถิติ คุณสามารถทดสอบสิ่งนี้ได้โดยการสร้างเสียงรบกวนโดยใช้ทั้งสองวิธีจากนั้น FFT และวางแผนจริงกับจินตภาพ (ระนาบเชิงซ้อนของโดเมนความถี่) คุณจะสังเกตเห็นความแตกต่างอย่างมากในรูปแบบ
Paul S

สวัสดีพอลยินดีต้อนรับสู่ DSP.SE หากคุณสนใจว่าเสียงจะเป็นอย่างไร (ในการทำงานด้านเสียง) คลื่นความถี่นั้นเป็นปัญหาหลัก มันจะดีมากถ้าคุณสามารถบอกรายละเอียดความคิดของคุณด้วยคำตอบใหม่ได้ ฉันไม่คิดว่าเรามีอะไรในเว็บไซต์ที่อธิบายถึงเทคนิคนั้น
นัก

1

ฉันใช้อัลกอริธึมของ 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 โดยเฉลี่ย

PSD สำหรับสัญญาณรบกวน 1 / f ผ่าน Corsini และอัลกอรึทึม


นี่เป็นไปตามโพสต์ก่อนหน้าของฉันในเครื่องกำเนิดเสียง 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 เอ็ด PSDs ความถี่ต่ำ PSDs ความถี่สูง เปรียบเทียบ 2 1 / f เครื่องกำเนิดเสียง

ตามที่ Corsini & Saletti ระบุไว้ในกระดาษโดยที่คือความถี่การสุ่มตัวอย่างและคือ“ ขีด จำกัด สูงสุดของย่านความถี่ที่เราจะสร้างตัวอย่างเสียง” สัมประสิทธิ์ตัวกรองดิจิตอลได้รับจากสมการของพวกเขา (5.1): ที่ c = 1. การขอรับ C & S PSDs เช่นเดียวกับที่แสดงไว้ข้างต้นให้ c = 0 และ0.5f_cfc10fMfcfM

ai=exp[2π10(iN)/hγ/2hc]
bi=exp[2π10(iN)/hc]
fM=0.5fc


1
Corsini และ Saletti state "ตัวกรองนี้ประกอบด้วยส่วนเรียงลำดับแรกที่เรียงซ้อนกัน N แต่ละอันมีคู่ขั้ว - ศูนย์จริง" และเสา N "กระจายอย่างสม่ำเสมอเมื่อเทียบกับลอการิทึมความถี่ที่มีความหนาแน่นของ h p ต่อความถี่ทศวรรษ (p / d) และ N ศูนย์ตามไปด้วย " ส่วนการพูดคุยของกระดาษนั้นได้รับการดำเนินการอย่างดีเยี่ยมดังนั้นจึงไม่มีปัญหาเพียงแค่เขียนโปรแกรมสิ่งที่พวกเขาบอกว่าจะทำ สิ่งที่ฉันมีคือสำเนาถาวรฉบับเก่าและสำเนาสแกน สำหรับ PSD ด้านบนฉันใช้ 3 เสา / ทศวรรษและ PSD นั้นถูกลบค่าเฉลี่ยและข้างเดียว Ed V
Ed V
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.