การทำธรณีพื้นฐานโดยไม่มีการรบกวน
การทำให้เป็นควอนตัมพื้นฐาน dithered โดยไม่มีการสร้างเสียงรบกวนทำงานเช่นนี้:
รูปที่ 1 แผนภาพระบบควอนไทซ์พื้นฐาน dithered สัญญาณรบกวนเป็นรูปสามเหลี่ยมที่มีค่าเฉลี่ยศูนย์โดยมีค่าสัมบูรณ์สูงสุดเท่ากับ 1 การปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด ข้อผิดพลาดที่เหลือคือความแตกต่างระหว่างเอาต์พุตและอินพุตและคำนวณเพื่อการวิเคราะห์เท่านั้น
สามเหลี่ยมสองรูปจะเพิ่มความแปรปรวนของความคลาดเคลื่อนที่เกิดจากปัจจัย 3 (จากถึง ) แต่จะแยกความหมายและความแปรปรวนของข้อผิดพลาดการควอนตัมเชิงสุทธิสุทธิจากค่า ของสัญญาณอินพุต นั่นหมายความว่าสัญญาณข้อผิดพลาดสุทธิไม่เกี่ยวข้องกับอินพุต แต่ช่วงเวลาที่สูงกว่าไม่แยกกันดังนั้นจึงไม่ได้เกิดข้อผิดพลาดแบบสุ่มที่เป็นอิสระอย่างสมบูรณ์ แต่ไม่มีใครตัดสินว่าคนสามารถได้ยินการพึ่งพาช่วงเวลาที่สูงขึ้นในสัญญาณผิดพลาดสุทธิบน สัญญาณอินพุตในแอปพลิเคชันเสียง11214
ด้วยข้อผิดพลาดสารเติมแต่งอิสระเราจะมีรูปแบบที่เรียบง่ายของระบบ:
รูปที่ 2 การประมาณควอนไทซ์ dithered พื้นฐาน ข้อผิดพลาดที่เหลือคือเสียงสีขาว
ในรูปแบบโดยประมาณเอาต์พุตเป็นอินพุตเพียงแค่บวกข้อผิดพลาดที่เหลือของเสียงสีขาวที่เป็นอิสระ
สั่นสะเทือนด้วยเสียง
ฉันไม่สามารถอ่าน Mathematica ได้ดีมากดังนั้นแทนที่จะเป็นระบบของคุณฉันจะวิเคราะห์ระบบจาก Lipshitz และคณะ " การสร้างเสียงรบกวนน้อยที่สุด " J. Audio Eng Soc., Vol.39, No.11, พฤศจิกายน 1991:
รูปที่ 3 Lipshitz และคณะ ไดอะแกรมระบบ 1991 (ดัดแปลงจากรูปที่ 1) ตัวกรอง (ตัวเอียงในข้อความ) รวมถึงความล่าช้าตัวอย่างหนึ่งเพื่อให้มันสามารถใช้เป็นตัวกรองข้อเสนอแนะข้อผิดพลาด เสียงรบกวนเป็นรูปสามเหลี่ยม dither
หากข้อผิดพลาดที่เหลือเป็นอิสระจากค่าปัจจุบันและอดีตของสัญญาณ A เรามีระบบที่ง่ายขึ้น:
รูปที่ 4 โมเดลโดยประมาณของ Lipshitz และคณะ 2534 ระบบ ตัวกรองเป็นเช่นเดียวกับในรูปที่ 3 และรวมถึงความล่าช้าตัวอย่างหนึ่ง มันไม่ได้ใช้เป็นตัวกรองข้อเสนอแนะ ข้อผิดพลาดที่เหลือคือเสียงสีขาว
ในคำตอบนี้ฉันจะทำงานกับแบบจำลองการวิเคราะห์ที่ง่ายขึ้น (รูปที่ 4) ใน Lipshitz ดั้งเดิมและคณะ ปี 1991 ระบบตัวกรองมีรูปแบบตัวกรองการตอบสนองต่อแรงกระตุ้นแบบไม่ จำกัด ทั่วไป (IIR) ที่ครอบคลุมทั้งตัวกรอง IIR และตัว จำกัด การตอบสนองต่อแรงกระตุ้นแบบ จำกัด (FIR) ในต่อไปนี้เราจะสมมติว่าตัวกรองเป็นตัวกรอง FIR ดังที่ฉันเชื่อตามการทดลองของฉันกับค่าสัมประสิทธิ์ของคุณนั่นคือสิ่งที่คุณมีในระบบของคุณ ฟังก์ชั่นการถ่ายโอนของตัวกรองคือ:
HF ฉันลิตรทีอีอาร์( z) = -ข1Z- 1-ข2Z- 2-ข3Z- 3- ...
ปัจจัยหมายถึงการหน่วงเวลาหนึ่งตัวอย่าง ในโมเดลโดยประมาณยังมีเส้นทางการรวมโดยตรงไปยังเอาต์พุตจากข้อผิดพลาดที่เหลือ สิ่งนี้จะถูกรวมเข้ากับเอาต์พุตของตัวกรองเมื่อตะกี้ซึ่งจะสร้างฟังก์ชั่นการถ่ายโอนตัวกรองเสียงเต็มรูปแบบ:Z- 1
H( z) = 1 -HF ฉันลิตรทีอีอาร์( z) = 1 +ข1Z- 1+ข2Z- 2+ข3z- 3+ … .
ที่จะไปจากคุณกรองสัมประสิทธิ์ซึ่งคุณรายการในการสั่งซื้อเพื่อเสียงเต็มรูปแบบฟังก์ชั่นการถ่ายโอนตัวกรองการสร้างค่าสัมประสิทธิ์พหุนาม , สัญญาณของค่าสัมประสิทธิ์ที่ เปลี่ยนเป็นบัญชีสำหรับการปฏิเสธของตัวกรองผลลัพธ์ในแผนภาพระบบและค่าสัมประสิทธิ์ถูกผนวกเข้ากับท้าย (โดยในสคริปต์คู่ด้านล่าง) และในที่สุดรายการจะถูกย้อนกลับ (โดย):… , -ข3, -ข2, -ข11 ,ข1,ข2,ข3, ...ข0= 1horzcat
flip
pkg load signal
b = [-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0.12, -0.06, 0.19, -0.22, -0.15, 0.4, 0.01, -0.41, -0.1, 0.84, -0.42, -0.81, 0.91, 0.75, -2.37, 2.29];
c = flip(horzcat(-b, 1));
freqz(c)
zplane(c)
สคริปต์แปลงการตอบสนองความถี่ขนาดและตำแหน่งศูนย์ของตัวกรองการสร้างเสียงรบกวนแบบเต็ม:
รูปที่ 5 การตอบสนองความถี่ขนาดของฟิลเตอร์ลดเสียงรบกวนเต็มรูปแบบ
รูปที่ 6 พล็อต Z-plane ของเสา ( ) และศูนย์ ( ) ของตัวกรอง เลขศูนย์ทั้งหมดอยู่ในวงกลมหน่วยดังนั้นตัวกรองการสร้างเสียงรบกวนทั้งหมดจึงเป็นเฟสต่ำสุด×∘
ฉันคิดว่าปัญหาในการหาค่าสัมประสิทธิ์ตัวกรองนั้นสามารถจัดรูปแบบใหม่ได้เนื่องจากปัญหาในการออกแบบตัวกรองขั้นต่ำที่มีค่าสัมประสิทธิ์นำเป็น 1 หากมีข้อ จำกัด โดยธรรมชาติต่อการตอบสนองความถี่ของตัวกรองดังกล่าว ในการสร้างเสียงรบกวนที่ใช้ตัวกรองดังกล่าว
การแปลงจากการออกแบบเสาทั้งหมดเพื่อ FIR ขั้นต่ำ
ขั้นตอนการออกแบบที่แตกต่างกัน แต่ในหลาย ๆ วิธีมีตัวกรองที่เทียบเท่ากันได้อธิบายไว้ในStojanović et al , "All-ขั้วโลกซ้ำดิจิตอลตัวกรองการออกแบบบนพื้นฐานของ Ultraspherical พหุนาม", วิศวกรรมวิทยุ, ปีที่ 23, ฉบับที่ 3, กันยายน 2014. พวกเขาคำนวณค่าสัมประสิทธิ์ส่วนของฟังก์ชั่นการถ่ายโอนของตัวกรอง low-pass low-pass ทุกตัวของ IIR พวกมันมักมีค่าสัมประสิทธิ์ส่วนนำ 1 และมีเสาทั้งหมดภายในวงกลมหน่วยความต้องการของตัวกรอง IIR ที่มั่นคง หากใช้สัมประสิทธิ์เหล่านั้นเป็นค่าสัมประสิทธิ์ของตัวกรองสัญญาณรบกวน FIR ขั้นต่ำพวกเขาจะให้การตอบสนองความถี่ผ่านสูงผ่านเมื่อเทียบกับตัวกรอง IIR ต่ำผ่าน (ฟังก์ชั่นถ่ายโอนค่าสัมประสิทธิ์ตัวหารกลายเป็นค่าสัมประสิทธิ์เศษ) ในสัญกรณ์ของคุณหนึ่งชุดของค่าสัมประสิทธิ์จากบทความนั้นคือ{-0.0076120, 0.0960380, -0.5454670, 1.8298040, -3.9884220, 5.8308660, -5.6495140, 3.3816780}
ซึ่งสามารถทดสอบได้สำหรับการประยุกต์ใช้การสร้างเสียงรบกวนแม้ว่ามันจะไม่ตรงตามข้อกำหนด:
รูปที่ 7 การตอบสนองความถี่ขนาดของตัวกรอง FIR โดยใช้ค่าสัมประสิทธิ์จากStojanovićและคณะ 2014
รูปที่ 8 พล็อตขั้ว - ศูนย์ของตัวกรอง FIR โดยใช้ค่าสัมประสิทธิ์จากStojanović et al 2014
ฟังก์ชั่นการถ่ายโอนทุกขั้วคือ:
H( z) =11 +a1Z- 1+a2Z- 2+a3Z- 3+ ...
ดังนั้นคุณสามารถออกแบบมั่นคงทุกขั้วกรอง IIR low-pass และใช้สัมประสิทธิ์เป็นสัมประสิทธิ์ที่จะได้รับขั้นต่ำเฟสสูงผ่านการกรอง FIR ด้วยค่าสัมประสิทธิ์ชั้นนำของ 1aข
ในการออกแบบตัวกรองแบบโพลทั้งหมดและการแปลงให้เป็นตัวกรอง FIR ขั้นต่ำคุณจะไม่สามารถใช้วิธีการออกแบบตัวกรอง IIR ที่เริ่มต้นจากตัวกรองต้นแบบแบบแอนะล็อกและแมปขั้วและศูนย์ในโดเมนดิจิทัลโดยใช้การแปลงแบบไบลิเนียร์ . ซึ่งรวมถึงcheby1
, cheby2
และellip
ใน Octave และ Python SciPy วิธีการเหล่านี้จะให้ค่าศูนย์อยู่ห่างจากจุดกำเนิด z-plane ดังนั้นตัวกรองจะไม่เป็นประเภทของเสาแบบครบวงจรที่ต้องการ
ตอบคำถามเชิงทฤษฎี
หากคุณไม่สนใจว่าจะมีเสียงรบกวนมากแค่ไหนที่ความถี่เหนือไตรมาสของความถี่การสุ่มตัวอย่างแล้ว Lipshitz และคณะ 1991 ตอบคำถามของคุณโดยตรง:
สำหรับฟังก์ชั่นการถ่วงน้ำหนักซึ่งไปที่ศูนย์เหนือส่วนหนึ่งของวงดนตรีนั้นไม่มีข้อ จำกัด ทางทฤษฎีเกี่ยวกับการลดเสียงรบกวน - พลังงานลดน้ำหนักที่หาได้จากวงจรของรูปที่ 1 นี่อาจเป็นกรณีเช่นหนึ่งสมมติว่า หูมีความไวเป็นศูนย์ระหว่างพูด 20 kHz และความถี่ Nyquist และเลือกฟังก์ชั่นการถ่วงน้ำหนักเพื่อสะท้อนความจริงนี้
รูปที่ 1 แสดง shaper เสียงรบกวนที่มีโครงสร้างตัวกรอง IIR ทั่วไปที่มีทั้งเสาและศูนย์ดังนั้นจึงแตกต่างจากโครงสร้าง FIR ที่คุณมีอยู่ในขณะนี้ แต่สิ่งที่พวกเขาพูดยังใช้กับสิ่งนั้นเพราะการตอบสนองแรงกระตุ้นของตัวกรอง FIR ทำโดยพลการใกล้กับการตอบสนองต่อแรงกระตุ้นของตัวกรอง IIR ที่เสถียรใด ๆ
สคริปต์ระดับแปดเสียงสำหรับการออกแบบตัวกรอง
นี่คือสคริปต์ Octave สำหรับการคำนวณค่าสัมประสิทธิ์โดยวิธีอื่นที่ฉันคิดว่าเทียบเท่ากับ Stojanovici และคณะ วิธีการแปรพารามิเตอร์ 2014 เป็นพร้อมตัวเลือกที่ถูกต้องของพารามิเตอร์ของฉันν= 0dip
pkg load signal
N = 14; #number of taps including leading tap with coefficient 1
att = 97.5; #dB attenuation of Dolph-Chebyshev window, must be positive
dip = 2; #spectrum lift-up multiplier, must be above 1
c = chebwin(N, att);
c = conv(c, c);
c /= sum(c);
c(N) += dip*10^(-att/10);
r = roots(c);
j = (abs(r(:)) <= 1);
r = r(j);
c = real(poly(r));
c .*= (-1).^(0:(N-1)); #if this complains, then root finding has probably failed
freqz(c)
zplane(c)
printf('%f, ', flip(-c(2:end))), printf('\n'); #tobalt's format
มันเริ่มต้นด้วยหน้าต่าง Dolph-Chebyshev เป็นค่าสัมประสิทธิ์โน้มน้าวตัวมันเองให้เพิ่มค่าศูนย์ฟังก์ชันการถ่ายโอนเป็นสองเท่าเพิ่มหมายเลขกลางแตะที่ "ยก" การตอบสนองความถี่ พบว่าเป็นศูนย์ทุกหนทุกแห่งค้นหาค่าศูนย์ลบค่าศูนย์ที่อยู่นอกวงกลมหน่วยแปลงค่าศูนย์กลับไปเป็นค่าสัมประสิทธิ์ (ค่าสัมประสิทธิ์นำจากpoly
เสมอ 1) และพลิกสัญลักษณ์ของค่าสัมประสิทธิ์ทุกวินาทีเพื่อให้ตัวกรองสูงผ่าน . ผลลัพธ์จาก (สคริปต์เวอร์ชันที่เก่ากว่า แต่ใกล้เคียงกัน) สคริปต์ดูมีแนวโน้ม:
รูปที่ 9. การตอบสนองความถี่ของตัวกรองจากสคริปต์ด้านบน (เวอร์ชั่นที่เก่ากว่า แต่เกือบเทียบเท่า)
รูปที่ 10 พล็อตโพล - ศูนย์ของตัวกรองจากสคริปต์ด้านบน (เวอร์ชั่นที่เก่ากว่า แต่เกือบเทียบเท่า)
ค่าสัมประสิทธิ์จาก (รุ่นเก่า แต่เทียบเท่าเกือบ) {0.357662, -2.588396, 9.931419, -26.205448, 52.450624, -83.531276, 108.508775, -116.272581, 102.875781, -74.473956, 43.140431, -19.131434, 5.923468}
สคริปต์ดังกล่าวข้างต้นในสัญกรณ์ของคุณ: ตัวเลขมีขนาดใหญ่ซึ่งอาจนำไปสู่ปัญหาที่เป็นตัวเลข
การปรับใช้ระดับเสียงของคู่เสียง
ในที่สุดฉันทำการปรับแต่งเสียงใน Octave และไม่ได้รับปัญหาอย่างที่คุณทำ จากการสนทนาของเราในความคิดเห็นฉันคิดว่าข้อ จำกัด ในการใช้งานของคุณคือคลื่นความถี่เสียงได้รับการประเมินโดยใช้หน้าต่างรูปสี่เหลี่ยมผืนผ้าหรือที่เรียกว่า "ไม่มีหน้าต่าง" ซึ่งกระจายคลื่นความถี่สูงไปยังความถี่ต่ำ
pkg load signal
N = length(c);
M = 16384; #signal length
input = zeros(M, 1);#sin(0.01*(1:M))*127;
er = zeros(M, 1);
output = zeros(M, 1);
for i = 1:M
A = input(i) + er(i);
output(i) = round(A + rand() - rand());
for j = 2:N
if (i + j - 1 <= M)
er(i + j - 1) += (output(i) - A)*c(j);
endif
endfor
endfor
pwelch(output, max(nuttallwin(1024), 0), 'semilogy');
รูปที่ 11 การวิเคราะห์สเปกตรัมเสียงเชิงปริมาณจากการใช้การสร้างสัญญาณรบกวนแบบคู่ด้านบนสำหรับสัญญาณอินพุตศูนย์ที่คงที่ แกนแนวนอน: ความถี่ปกติ สีดำ: ไม่มีการสร้างเสียงรบกวน ( c = [1];
), สีแดง: ตัวกรองดั้งเดิมของคุณ, สีน้ำเงิน: ตัวกรองจากส่วน "สคริปต์คู่สำหรับการออกแบบตัวกรอง"
รูปที่ 12 เอาต์พุตโดเมนเวลาจากการใช้การสร้างสัญญาณรบกวนแบบคู่ด้านบนสำหรับสัญญาณอินพุตศูนย์ที่คงที่ แกนแนวนอน: หมายเลขตัวอย่าง, แกนแนวตั้ง: ค่าตัวอย่าง สีแดง: ตัวกรองดั้งเดิมของคุณสีน้ำเงิน: ตัวกรองจากส่วน "สคริปต์คู่เพื่อการออกแบบตัวกรอง"
ตัวกรองการสร้างจุดรบกวนเสียงที่รุนแรงมากขึ้น (สีน้ำเงิน) ส่งผลให้ค่าตัวอย่างเอาต์พุตเชิงปริมาณที่มีขนาดใหญ่มากถึงแม้จะไม่มีอินพุตก็ตาม