เหตุใดเราจึงใช้หน้าต่างในโดเมนเวลาแทนที่จะทำ FFT ปรับเปลี่ยนคลื่นความถี่และเปลี่ยนเป็น FFT แบบผกผัน


16

ฉันคิดว่า DSP จะทำได้โดยใช้ FFT บางส่วนของสัญญาณปรับเปลี่ยนตัวอย่างที่เป็นผลมาจาก FFT (เนื่องจากพวกเขาเป็นตัวแทนของสเปกตรัมของสัญญาณ + เสียงของเรา) และลบสัญญาณที่ไม่ต้องการและนอกเหนือจาก FFT ผกผันเพื่อให้ได้เวลา การเป็นตัวแทนโดเมนของสัญญาณกรอง (ลบเสียงรบกวนแล้ว) อย่างไรก็ตามสิ่งนี้ไม่ได้ทำแทนเราทำงานทั้งหมดในโดเมนเวลาโดยใช้ฟังก์ชั่นหน้าต่าง ทำไม?

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

-> ให้ดูว่าความสับสนของฉันมาจากไหน สำหรับตัวกรองแบบอะนาล็อกเช่นตัวกรองความถี่ต่ำเรามีพัลส์เช่นการตอบสนองความถี่ เมื่อเรากรองสัญญาณเราจะเพิ่มสเปกตรัมของสัญญาณอย่างมีประสิทธิภาพด้วยพัลส์เช่นการตอบสนองความถี่ของตัวกรอง สิ่งนี้จะลดความถี่ทั้งหมดในสัญญาณของเราเหนือการตัดออกเป็น 0 นี่คือการทำงานของตัวกรองสัญญาณความถี่ต่ำ ทำไมไม่ทำเช่นเดียวกันกับตัวกรองดิจิตอลด้วย?


2
สำเนาซ้ำที่เป็น
endolith

คำตอบ:


7

หน้าต่างลดการรั่วไหลของสเปกตรัม

สมมติว่าคุณเริ่มต้นด้วย ) ระยะเวลาที่จะเห็นได้ชัด2 π / ω 0 บาป(Y)=cos(ω0เสื้อ)2π/ω0

แต่ถ้าไม่มีใครบอกคุณว่าช่วงเวลานั้นคือและคุณเลือกช่วง[ 0 , 1.8 π / ω 0 ]และรับ FFT ของรูปคลื่นที่ถูกตัดทอนนี้คุณจะสังเกตองค์ประกอบความถี่ในความถี่อื่นซึ่งเป็นของปลอมทั้งหมดเพราะ การกระโดดที่สร้างขึ้นโดยการคัดลอกรูปคลื่นที่ถูกตัดทอนเพื่อช่วงเวลานั้นไม่ได้มีอยู่จริงในสัญญาณดั้งเดิม - มันเป็นสิ่งประดิษฐ์ของการตัดทอนที่โชคไม่ดีที่ไม่สามารถจับการเปลี่ยนแปลงระหว่างจุดต่าง ๆ ได้อย่างราบรื่น จะเป็นการดีที่มีเพียงหนึ่งองค์ประกอบสเปกตรัมที่ω = ω 0 2π/ω[0,1.8π/ω0]ω=ω0

จุดประสงค์ของการสร้างหน้าต่างในโดเมนเวลาคือการลดองค์ประกอบสเปกตรัมที่เป็นเท็จทั้งหมดเหล่านี้


12

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

บทความนี้ให้ภาพเชิงลึกเกี่ยวกับปรากฏการณ์นี้มากขึ้นรวมถึงความเข้าใจในผลกระทบของฟังก์ชั่นหน้าต่างที่แตกต่างกัน


11

ฉันคิดว่าคุณกำลังสับสนกับการปฏิบัติการสองแบบที่ต่างกัน

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

ดังนั้นสำหรับคำถามของคุณ 'ทำไมไม่ทำเช่นเดียวกันกับตัวกรองดิจิตอลด้วย' คำตอบก็คือ 'เราทำเมื่อมันเหมาะสม'


ฉันมีความประทับใจด้วยว่าการบิดและการเรียงหน้าต่างนั้นปะปนกับคำถาม ดีที่คุณชี้มันออกมา!
Deve

11

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

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

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

ก่อนที่การกรองโดเมน FFT และความถี่คุณจะแทนที่การกรองใด ๆ (ที่เรียกว่า "การรั่วไหล") ที่ทำโดยการเรียงหน้าต่างแบบสี่เหลี่ยมผืนผ้าและดังนั้นจึงไม่ได้รับการแปลงตัวกรองที่ไม่ต้องการเพิ่มเติม

วิธีอื่นในการทำเช่นนี้คือการใช้วิธีการซ้อนทับเพิ่มหรือทับซ้อนกันบนหน้าต่างที่ต่อเนื่องกันซึ่งเอฟเฟกต์ของหน้าต่างสี่เหลี่ยมหนึ่งบานถูกยกเลิกโดยเอฟเฟกต์ที่คล้ายกันจากหน้าต่างที่อยู่ติดกัน


5

หน้าต่างในโดเมนเวลาเพราะ

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

เช่นจากวิกิพีเดีย

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

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

หากคุณมีสัญญาณทั้งหมดแล้วทางเลือกอื่นก็คือใช้เวฟเล็ต


2

ฉันมีคำถามเดียวกัน

การแปลงเป็นผลรวม / รวมของสัญญาณโดเมนเวลาคูณกับหน้าต่าง สิ่งนี้ไม่ควรสับสนกับสัญญาณโดเมนเวลา "เรียง"

ในตอนท้ายของนี้บทความช่วยฉันมาก

โดยพื้นฐานแล้วมันบอกว่าสัญญาณจริงมี จำกัด และตัดสัญญาณจริงในทันทีทำให้เกิดความถี่ / สิ่งประดิษฐ์ที่ไม่ต้องการในโดเมนความถี่

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

ตัดเรียบ

ตัวอย่างที่มีหน้าต่างด้านบนจะมีสิ่งประดิษฐ์ในโดเมนความถี่น้อยกว่าตัวอย่างดิบด้านล่าง

ตัดออกทันที


1

มีสองประเภทกว้าง ๆ ที่เกี่ยวข้องกับ FFT และพวกเขาคือ 1) วิธีที่มีประสิทธิภาพในการนำตัวกรอง FIR มาใช้และ 2) การวิเคราะห์สเปกตรัม

สำหรับการกรอง FIR เราไม่ต้องกังวลกับ windows และไม่ได้ใช้มันเว้นแต่ว่าหน้าต่างนั้นตรงกับตัวกรอง แต่นั่นไม่ใช่เรื่องปกติที่ต้องทำ การรั่วไหลไม่ได้เป็นความกังวล

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


1

จำเป็นต้องมีหน้าต่างในโดเมนเวลาเพื่อหลีกเลี่ยงความถี่เดียวที่ไม่ได้อยู่ในช่องเก็บคลื่นความถี่เพื่อกระจายออกไปทั่วสเปกตรัมทั้งหมด บางทีหน้านี้อาจช่วยได้: http://www.sm5bsz.com/slfft/slfft.htm Linrad (โครงการอายุ 20 ปีของฉัน) ใช้ FFT แบบหน้าต่างจากนั้นจึงใช้ตัวกรองในโดเมนความถี่ (ทำสิ่งที่เราไม่ต้องการให้เป็นศูนย์) ใช้หน้าต่าง - อย่าไปอย่างฉับพลันจาก weigtht 1 ถึงน้ำหนัก 0 บนถังขยะความถี่ จากนั้นใช้ FFT ย้อนหลัง - แต่ตอนนี้มีจำนวนน้อยกว่ามาก ไม่จำเป็นต้องรวมถังขยะความถี่ทั้งหมดที่เรารู้ว่าเป็นศูนย์ !! ในฐานะที่เป็น resulr เราได้รับฟังก์ชั่นเวลาที่มีขนาดเล็กกว่ามาก - นั่นหมายถึงมีอัตราการสุ่มตัวอย่างที่ต่ำกว่ามาก ขั้นตอนนี้จะทำการกรองและกำจัดในขั้นตอนเดียว วิธีนี้มีประสิทธิภาพมากในกรณีที่ต้องการกรองหลาย ๆ ช่องในเวลาเดียวกัน หน้าแรกของ linrad อยู่ที่นี่: http://www.sm5bsz.com/linuxdsp/linrad.htm

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