มีสิ่งที่ผิดเพี้ยนแบบไม่ จำกัด เชิงเส้นหรือไม่?


12

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

http://flic.kr/p/83JMjT

ป้อนคำอธิบายรูปภาพที่นี่

แต่ฉันเพิ่งรู้ว่าถ้าคุณใช้การขยายขนาดใหญ่กับคลื่นไซน์ดิจิตอลและจากนั้นคลิปมันแบบดิจิทัลมันจะสร้างรูปร่างคลื่นสี่เหลี่ยมที่เหมือนกันโดยไม่มีปรากฏการณ์กิ๊บส์ ดังนั้นมันจึงเป็นผลิตภัณฑ์ที่มีการบิดเบือนนามแฝงใช่ไหม ดังนั้นใดบิดเบือนไม่เชิงเส้นในโดเมนดิจิตอลที่ผลิตฮาร์โมนินอกขีด จำกัด Nyquist จะผลิตสินค้าที่มีการบิดเบือน aliased? (แก้ไข: ฉันได้ทำการทดสอบและยืนยันว่าส่วนนี้เป็นจริง)

มีสิ่งที่บิดเบือนวง จำกัด ในการจำลอง (ในโดเมนดิจิตอล) ผลกระทบของการบิดเบือน (ในโดเมนอนาล็อก) ก่อนที่วง จำกัด และการสุ่มตัวอย่าง? ถ้าเป็นเช่นนั้นคุณจะทำอย่างไร ถ้าฉันค้นหา "bandlimited distortion" ฉันพบการอ้างอิงถึงชื่อพหุนาม Chebyshev แต่ฉันไม่รู้ว่าจะใช้พวกมันอย่างไรหรือพวกมันใช้งานได้เฉพาะคลื่นไซน์หรืออะไร:

เครื่องมือนี้ไม่ได้พยายามสร้างความผิดเพี้ยนแบบ จำกัด วง ผู้ที่สนใจในการบิดเบือนวง จำกัด ควรตรวจสอบการใช้ชื่อพหุนาม Chebyshev เพื่อสร้างผล การบิดเบี้ยวของไฮเพอร์โบลิกแทนเจนต์

 

"Chebyshev polynomial" - การสร้างฟังก์ชั่นที่มีคุณสมบัติสำคัญที่พวกเขามีวงดนตรี จำกัด - ภายในเช่นที่พวกเขาไม่แนะนำฮาร์โมนิกสเปกตรัมปลอมเนื่องจากการทับซ้อน ฯลฯWave Shaper


ฉันไม่แน่ใจว่าคุณกำลังถามอะไร หากคุณทำการดำเนินการที่ทำให้เกิดการสร้างเนื้อหาความถี่นอกภูมิภาค Nyquist ที่คุณใช้งานอยู่คุณจะเห็นนามแฝงไม่ว่าคุณจะสร้างเนื้อหาดังกล่าวอย่างไร คุณพยายามเลียนแบบอะนาล็อกชนิดใด วิธีหนึ่งอาจเป็นการเพิ่มสัญญาณให้มีอัตราตัวอย่างสูงพอสมควรก่อนจากนั้นใช้พื้นที่ Nyquist ที่กว้างขึ้นเพื่อทำการประมวลผลสัญญาณของคุณ จากนั้นคุณสามารถลดตัวอย่างกลับไปเป็นอัตราเดิมหลังจากเสร็จสิ้น
Jason R

@ JasonR: ใช่สำหรับการสร้างคลื่นสี่เหลี่ยมคุณสามารถทำวิธีการ จำกัด วงดนตรีอย่างแท้จริงเช่นการสังเคราะห์สารเติมแต่งหรือคุณสามารถประมาณโดยการยกตัวอย่างก่อนสร้างคลื่นสี่เหลี่ยมแบบไร้เดียงสาจากนั้นก็ลดขนาดลง (แต่จะยังมี นามแฝงบางระดับในระดับที่ต่ำกว่า) ในทำนองเดียวกันคุณสามารถประมาณความผิดเพี้ยนตามที่คุณพูดด้วยการยกตัวอย่างก่อน แต่มีวิธีที่จะสร้างมันโดยตรงโดยไม่มีนามแฝงเป็นศูนย์ซึ่งคล้ายกับวิธีการสังเคราะห์เพิ่มเติมสำหรับการสร้างคลื่นสี่เหลี่ยม
endolith

@ JasonR: ฉันถามเกี่ยวกับการบิดเบือนที่ไม่ใช่เชิงเส้นโดยทั่วไป แต่สิ่งที่เลียนแบบวงจรการบิดเบือนของแอมป์กีตาร์อะนาล็อกจะเป็นตัวอย่างที่ดี ถ้าฉันเข้าใจถูกต้องการทำอย่างไร้เดียงสาในโดเมนดิจิทัลจะผลิตผลิตภัณฑ์ที่ไม่มีการบิดเบือนเมื่อบิดเบี้ยวในโดเมนอะนาล็อกซึ่งบางอย่างอาจได้ยินอย่างชัดเจนที่ความถี่ต่ำกว่าพื้นฐาน ฯลฯ
endolith

2
@endolith ชื่อพหุนาม Chebyshevอาจเป็นสิ่งที่คุณต้องการ
เก็บข้อมูล

@datageist: คุณสามารถเขียนคำตอบเกี่ยวกับวิธีการใช้ชื่อพหุนาม Chebyshev ได้หรือไม่? แม้แต่เรื่องย่อ
endolith

คำตอบ:


5

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

ฉันสามารถนึกถึงวิธีต่อไปนี้:

  1. คุณสามารถใช้ปัจจัยการสุ่มตัวอย่างสูงพอที่จะจับฮาร์โมนิกส์พิเศษ (มากถึงความแม่นยำตามอำเภอใจเช่นพื้นเสียงของคุณ)
  2. คุณสามารถใช้ฟังก์ชั่นการตัด "เบากว่า" (ดูตัวอย่างที่นี่ ) ที่มีฮาร์โมนิกส์ที่ตายเร็วกว่า clipper ยาก รุ่นนี้ง่ายกว่า แต่แนะนำการบิดเบือนที่ความถี่ต่ำ
  3. สร้างวิธีการที่คุณแนะนำด้านบนสอดแทรกสัญญาณตัวอย่างของคุณ (เช่นใช้ตัวแยกสัญญาณ Lagrange หรือ Chebyshev) เพื่อสร้างแบบจำลองเวลาต่อเนื่อง จากนั้นใช้ hard clipper และ low-pass ในโดเมนต่อเนื่องที่จำลองขึ้น ตัวอย่างผลลัพธ์

คุณสามารถรวม (1) และ (2) วิธีที่สามนั้นซับซ้อน แต่ให้การควบคุมที่ดีที่สุดในการยอมรับความผิดเพี้ยนของคุณและอาจจะปรับให้ดีขึ้นตามข้อกำหนดความเที่ยงตรงสูงมาก

f(x)

f(x)=n=0[f(n)(0)n!xn]

f(x)x=g(t)g(t)xng(t)nnnnคูณด้วยสัญญาณของคุณ ในการทำให้ภาพสมบูรณ์คุณจะต้องหาแอมพลิจูดที่เกี่ยวข้องกับแต่ละคำศัพท์และตัดสินใจว่ามีคำศัพท์กี่ข้อในการสรุปที่เกี่ยวข้อง

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


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

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

4

สองสามวิธีในการบิดเบือนแบบไม่เชิงเส้นนามแฝง (เพื่อเพิ่มความยาก):

  1. fs2NffN+1

  2. N2N

  3. f:RRf:RNRMNM>N

  4. การออกแบบเชิงพีชคณิตที่มีข้อ จำกัด : ในรายการก่อนหน้านี้คุณได้เห็นว่าการลดรอยหยักแบบไม่เชิงเส้นจะนำไปสู่การกรองแบบไม่เชิงเส้น แน่นอนว่าไม่ใช่ตัวกรองไม่เชิงเส้นทั้งหมดเป็นนามแฝงฟรี แต่บางตัวอาจเป็น ดังนั้นคำถามที่ชัดเจนคือเกณฑ์ที่จะทำให้ตัวกรองนั้นปลอดนามแฝงอย่างเคร่งครัดและวิธีการออกแบบ ตามที่ปรากฎแถลงการณ์ที่เทียบเท่ากับการปราศจากนามแฝงคือตัวกรองที่ไม่ใช่เชิงเส้นจะทำการแปลด้วยตัวอย่างย่อย ดังนั้นคุณต้องแน่ใจว่ามันไม่ได้สร้างความแตกต่างถ้าคุณแปลก่อนแล้วจึงกรองหรือกรองก่อนแล้วจึงแปล เงื่อนไขนี้นำไปสู่ข้อ จำกัด การออกแบบที่เข้มงวดมากสำหรับตัวกรองแบบไม่เชิงเส้น แต่ขึ้นอยู่กับว่าคุณตระหนักถึงการแปลสัญญาณอย่างไร ตัวอย่างเช่นการแปลในอุดมคติจะต้องการค่าสัมประสิทธิ์จำนวนมากสำหรับตัวกรองแบบไม่เชิงเส้น ดังนั้นคุณต้องประมาณสัญญาณการแปลเพื่อ จำกัด เพื่อรับตัวกรองไม่เชิงเส้น จำกัด Alias-freeness ปรับขนาดด้วยการประมาณที่คุณใช้ แต่คุณสามารถควบคุมได้ดีมาก หลังจากที่คุณได้ทำงานเกี่ยวกับคณิตศาสตร์ของวิธีการนี้แล้วคุณสามารถออกแบบฟังก์ชั่นการถ่ายโอนแบบไม่เชิงเส้นใด ๆ (ไม่เพียง แต่ราบรื่น) เป็นแบบจำลองดิจิตอลในอุดมคติเกือบในรูปแบบของตัวกรองแบบไม่เชิงเส้น ฉันอาจไม่สามารถร่างรายละเอียดที่นี่ แต่บางทีคุณอาจพบแรงบันดาลใจจากคำอธิบายนี้


y[t]=x[t]k

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

1
@ MikeBattaglia บางทีคุณสามารถสร้างคำถามใหม่เพื่อที่ฉันจะได้ให้คำตอบอย่างละเอียด เพื่อตอบคำถามที่สองของคุณคุณไม่ได้ใช้เคอร์เนล SINC แต่ในกรณีที่ง่ายที่สุดคือเคอร์เนล boxcar เมล็ดที่มีลำดับสูงกว่าจะทำงานได้ แต่เพื่อให้ได้ผลการวิเคราะห์คุณจะต้อง จำกัด ตัวเองให้อยู่ในระดับที่แน่นอน
Jazzmaniac

ขอบคุณ - สร้างคำถามใหม่ที่นี่สำหรับคำถามการออกแบบตัวกรอง: dsp.stackexchange.com/q/51533/18276
Mike Battaglia

2

Tn(x)=cos(narccos(x)).

Tn(x)

(1)Tn(cos(kx))=cos(narccos(cos(kx)))=cos(nkx).

พหุนามสามารถสร้างได้ง่าย ๆ โดยใช้ความสัมพันธ์ที่เกิดซ้ำต่อไปนี้:

T0(x)=1T1(x)=xTn(x)=2xTn1(x)Tn2(x).

นี่คือสองสามคนแรก:

T0(x)=1T1(x)=xT2(x)=2x(x1)=2x21T3(x)=2x(2x21)x=4x33xT4(x)=2x(4x33x)(2x21)=8x48x2+1

(1)T2cos(x)

2cos2(x)1=2(eix+eix2)21=24(ei2x+2eixeix+ei2x)1=(ei2x+ei2x2)+221=cos(2x).

โดยการคำนวณแบบ Chebyshev

f(x)=n=0anTn(x)

nf(x)


ขอบคุณ! สำหรับรูปคลื่นนอกเหนือจากไซน์อยด์เดี่ยวจะเกิดอะไรขึ้น การ จำกัด Bandmodulation หรือไม่?
endolith

1
xn

1

@ robert-bristow-johnson อธิบายสิ่งนี้อย่างชัดเจนใน comp.dsp :

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

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

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

ในความเป็นจริงคุณสามารถลดอัตราการสุ่มตัวอย่างมากเกินไปโดยปล่อยให้มีนามแฝงเกิดขึ้นตราบใดที่มีอยู่ในวงดนตรีที่จะถูกลบออกก่อนการสุ่มตัวอย่าง:

เคล็ดลับเล็กน้อยอีกข้อหนึ่งคือคุณไม่จำเป็นต้องกังวลเกี่ยวกับนามแฝงที่จะพับลงไปยังพื้นที่ที่คุณจะออก LPF ดังนั้นพหุนามลำดับที่ 5 จำเป็นต้องมีอัตราส่วนที่เกินจริงเพียง 3 ของฮาร์โมนิก 2 อันดับแรกเหล่านั้นอาจเป็นนามแฝง แต่จะไม่กลับเข้าสู่เบสแบนด์ เมื่อสุ่มตัวอย่างคุณกรองฮาร์โมนิกที่มีนามแฝงออก ดังนั้นฉันคิดว่ากฎที่ยากและรวดเร็วคือ

อัตราส่วน oversampling = (คำสั่งพหุนาม + 1) / 2


2
NN+12fs

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

1
โอ้ที่รัก เพื่อแต่งตัวคำตอบที่ดีต้องใช้งาน
robert bristow-johnson

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