ทำไมเราถึงพูดว่า“ การเติมเต็มศูนย์ไม่เพิ่มความละเอียดของความถี่”


12

นี่คือไซน์ของความถี่f = 236.4 Hz(ยาว 10 มิลลิวินาทีมีN=441คะแนนที่อัตราการสุ่มตัวอย่างfs=44100Hz) และ DFT โดยไม่มีการเติมเต็ม :

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

ข้อสรุปเดียวที่เราสามารถให้ได้โดยดูจาก DFT คือ: "ความถี่ประมาณ 200Hz"

นี่คือสัญญาณและ DFT ของมันที่มีการเติมเต็มศูนย์ขนาดใหญ่ :

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

ตอนนี้เราสามารถให้ข้อสรุปที่แม่นยำมากขึ้น : "โดยการดูอย่างละเอียดที่สเปกตรัมสูงสุดฉันสามารถประมาณความถี่ 236Hz" (ฉันซูมและพบว่าค่าสูงสุดอยู่ใกล้ 236)

คำถามของฉันคือทำไมเราบอกว่า "ศูนย์ padding ไม่ได้เพิ่มความละเอียด" ? (ฉันเห็นประโยคนี้บ่อยมากจากนั้นพวกเขาพูดว่า "เพิ่มการแก้ไขเท่านั้น")

=> จากตัวอย่างของฉันการเติมเต็มศูนย์ช่วยให้ฉันค้นหาความถี่ที่ถูกต้องด้วยความละเอียดที่แม่นยำยิ่งขึ้น!


1
อีกวิธีหนึ่งในการคิดเกี่ยวกับคำถามที่เก่ามากนี้: หากคุณไม่มีพล็อตอนุกรมเวลาเลย แต่เพียงแค่ 'ความละเอียดต่ำ' - คุณสามารถแปลงเป็นอนุกรมเวลา, zero-pad และอีกครั้ง - เพื่อรับ 236Hz out ดังนั้น 'ความละเอียดต่ำ' จะต้องมีข้อมูลเดียวกันทั้งหมดของข้อมูลที่ราบรื่น
Joshua R.

คำตอบ:


19

การแก้ไขมีคำจำกัดความที่เฉพาะเจาะจงมากในบริบทนี้ มันหมายถึงความสามารถของคุณในการแก้ไขสองเสียงแยกที่ความถี่ใกล้เคียง คุณได้เพิ่มอัตราตัวอย่างของการประมาณค่าสเปกตรัมของคุณ แต่คุณไม่ได้รับความสามารถในการแยกแยะระหว่างสองโทนที่อาจเป็นเช่น 236 Hz และ 237 Hz แต่พวกเขาจะ "หลอมรวมเข้าด้วยกัน" เป็นหยดเดียวไม่ว่าคุณจะใส่ศูนย์ไหนก็ตาม

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

-

หากต้องการดูว่าสิ่งนี้เกิดขึ้นได้อย่างไรนี่คือพล็อต FFT ที่ซูมเข้าด้วยกันของการเพิ่มสัญญาณสองสัญญาณ: ไซน์ดั้งเดิมของคุณและสัญญาณที่แตกต่างจากความถี่ 0 ถึง 100 Hz

มันอยู่ตรงจุดสิ้นสุดความแตกต่าง 100Hz ของพล็อต (ด้านซ้ายมือที่นี่) ที่คุณสามารถแยกแยะ (แก้ไข) ทั้งสองได้

โค้ด Scilab สำหรับสร้างพล็อตด้านล่าง

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

f = 236.4;
d = 10;
N=441;
fs=44100;
extra_padding = 10000; 

t=[0:1/fs:(d/1000-1/fs)]
ff = [0:(N+extra_padding-1)]*fs/(N+extra_padding);

x = sin(2*%pi*f*t);

XX = [];

for delta_f = [0:100];
    y = sin(2*%pi*(f+delta_f)*t);
    FFTX = abs(fft([x+y zeros(1,extra_padding)]));
    XX = [XX; FFTX];
end

mtlb_axis([0 1300 0 500])

figure(1);
clf
[XXX,YYY] = meshgrid(ff,0:100);
mesh(XXX(1:100,[50:90]),YYY(1:100,[50:90]),XX(1:100,[50:90]))

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

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

ฉันคิดว่าคุณเข้าใจถูกต้อง Zero-padding มีการใช้งานเช่นในการประมาณค่าตำแหน่งสูงสุดจากสเปกตรัมหยาบ มันไม่ใช่กระสุนเงิน
Jason R

1
ฉันแค่ลองทำอย่างอื่นที่ไม่ใช่ zero-padding แต่เกี่ยวข้องกัน แทนการทำx(n)อีกต่อไป (มี0ที่สิ้นสุด) ผมให้x(n)ยาว n แต่การเปลี่ยนแปลงอยู่ที่นี่: แทนDFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)สำหรับk=0,1,...,N-1ผมทำDFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))สำหรับk=0,1,...,10*N-1... นี้เป็นเหมือนการเพิ่มถังขยะมากขึ้น ( 10 NถังขยะแทนNถังขยะความถี่) แต่การรักษาเดียวกันความยาวx(n) Nตอนนี้ถังขยะจะเป็น 10hz, 20hz, ... , 100hz, 110hz, 120hz, ..... => มันเหมือนกันกับการเติมศูนย์: ไม่มีความละเอียดจริงเพิ่มเติม แต่เป็นการแก้ไขเท่านั้น?
Basj

การเพิ่มถังขยะมากขึ้น (10N แทนที่จะเป็น N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))สำหรับk=0,1,...,10*N-1และการรักษาx(n)ความยาวNเท่ากันให้ผลเหมือนกันมากกว่าการเติมศูนย์: ไม่ใช่ความละเอียดที่มากขึ้น แต่เป็นการแก้ไขเท่านั้น?
Basj

13

คำว่า "การแก้ไข" มีความหมายหลายอย่างซึ่งอาจสร้างความสับสนให้กับคนที่พยายามสื่อสารเมื่อใช้ความหมายที่แตกต่างกันสองแบบ

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

หากต้องการความละเอียดในการแก้ปัญหาต้องใช้การจุ่ม (ตัวอย่างเช่นการลดลงอย่างน้อย 3 เดซิเบล) ระหว่างยอดสเปกตรัมดังนั้นความละเอียดจะยิ่งต่ำกว่าระยะห่างของช่อง FFT เช่นไม่ได้เป็น Fs / N แต่ 2X ถึง 3 เท่า ขึ้นอยู่กับหน้าต่างที่ใช้ ความต้องการที่อ่อนแอกว่าสำหรับการแก้ไขอาจเป็นเพียงการเว้นวรรคความถี่ของเวกเตอร์พื้นฐานฉากของ DFT เช่น Fs / N

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

ในแง่ของการติดตามพิทช์การประมาณพาราโบลาหรือ Sinc (การสอดแทรกระหว่างการแยกผลลัพธ์ของ FFT) ของผลลัพธ์ FFT ที่ไม่ใช่แบบไม่มีเบาะขอบอาจทำให้คุณได้ผลลัพธ์ที่ดีเช่นเดียวกับพล็อต FFT แบบ zero-padded ที่เข้มข้นขึ้น ดังนั้นการทำให้เป็นศูนย์จะให้ผลลัพธ์การติดตามที่ "ดีกว่า" มากกว่าการเลือกยอดที่ไม่เป็นศูนย์และไม่มีการแก้ไข แต่มักจะมีประสิทธิภาพน้อยกว่าการใช้การแก้ไข

หากคุณเพิ่มสัญญาณรบกวนให้กับตัวอย่างของคุณ แต่น้อยกว่าสัญญาณเล็กน้อยคุณจะพบว่าจุดสูงสุดแบบไม่มีเบาะนั้นอาจไม่ถูกต้องเช่นเดียวกับจุดสูงสุดที่ไม่เป็นศูนย์ ดังนั้นในกรณีทั่วไปคุณอาจไม่พบความถี่ "ถูกต้อง" ที่มีความแม่นยำมากกว่าเดิม Zero-padding จะทำการสอดแทรกผลลัพธ์ที่ไม่ถูกต้องเนื่องจากสัญญาณรบกวนซึ่งเป็นอีกสาเหตุหนึ่งที่ทำให้ไม่สามารถเพิ่มความละเอียดได้


สิ่งที่ควรจำ: จะเกิดอะไรขึ้นถ้าฉันมีไซน์เดียวกันf=236.4 hzระหว่างเดียวกัน10msเท่านั้น แต่ใช้ fs = 192khz แทนที่จะเป็น 44.1khz: ความละเอียดความถี่ที่แท้จริงจะสูงขึ้นไหม?
Basj

การเพิ่มอัตราตัวอย่างจะช่วยให้คุณได้ถังขยะที่มีความถี่สูงขึ้น แต่ระยะห่างระหว่างถังขยะ DFT เดียวกันจะใกล้เคียงกับความถี่ที่น่าสนใจใด ๆ
hotpaw2

1
การเพิ่มอัตราตัวอย่างจะทำให้sincเส้นโค้งคล้ายใน DFT แคบลงหรือไม่ ถ้าไม่ได้นี้แสดงให้เห็นว่าการเพิ่มอัตราตัวอย่างจะไม่เพิ่มความละเอียด (ในความหมายของความสามารถในการแก้ปัญหาความถี่)
Basj

1/TT

ความกว้างของความถี่ Sinc นั้นสัมพันธ์กับความกว้างของหน้าต่างข้อมูลในเวลาการเติมเต็มศูนย์หรือการเปลี่ยนอัตราตัวอย่างไม่ได้ส่งผลกระทบต่อมันจริงๆ (อื่น ๆ ที่สุ่มตัวอย่างหรือปัญหาการหาปริมาณ)
hotpaw2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.