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


15

ฉันค่อนข้างเป็นสามเณรสำหรับการประมวลผลสัญญาณและฉันรู้ว่าคำถามนี้อาจกว้างเกินไป แต่ฉันยังอยากจะได้ยินคำแนะนำจากผู้เชี่ยวชาญ

ฉันได้รับการสอนให้ใช้butter(เพื่อออกแบบตัวกรอง Butterworth aka ตัวกรองขนาดแบนราบสูงสุด) และfiltfilt(ตัวกรองดิจิตอลแบบ Zero-phase) สำหรับการกรองแบนด์ของสัญญาณ EEG (อิเลคโทรโฟโลแกรม) ใน MATLAB ออฟไลน์ (เช่นหลังจากเสร็จสิ้นการบันทึก) วิธีนี้คุณสามารถหลีกเลี่ยง "การหน่วงเวลา" ที่หลีกเลี่ยงไม่ได้ซึ่งเกิดจากตัวกรองดิจิตอล (เช่นการกรองแบบเฟสศูนย์)

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

ข้อดีและข้อเสียของการใช้fft/ifftวิธีการง่ายๆในการกรอง bandpass คืออะไร ทำไมคนถึงชอบใช้ตัวกรองดิจิตอล FIR หรือ IIR

ตัวอย่างเช่นfft/ifftวิธีนี้มีแนวโน้มที่จะเกิดการรั่วไหลของคลื่นหรือระลอกคลื่นมากกว่าเมื่อเทียบกับตัวกรองสัญญาณดิจิตอลที่จัดตั้งขึ้นหรือไม่? วิธีนี้ประสบกับความล่าช้าเฟสหรือไม่ มีวิธีที่จะเห็นภาพการตอบสนองต่อแรงกระตุ้นสำหรับวิธีการกรองนี้เพื่อเปรียบเทียบหรือไม่?


คำถามที่เกี่ยวข้อง (แต่ไม่จำเป็นต้องซ้ำกัน): electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922

การใช้ FFT เพื่อกรองสัญญาณนั้นใช้งานได้จริง ๆ แต่มีบางสิ่งที่ต้องระวัง ดูคำถาม / คำตอบที่คล้ายกันนี้สำหรับข้อมูลเพิ่มเติม: stackoverflow.com/a/2949227/565542
sbell

5
คำถามเช่นนี้อาจเหมาะสมกว่าสำหรับไซต์ประมวลผลสัญญาณ
Jason R

2
ฉันคิดว่าคู่มือนักวิทยาศาสตร์และวิศวกรของการประมวลผลสัญญาณดิจิตอลโดย Steven W. Smithมีคำตอบ ฉันคิดว่าเขาบอกว่าตัวอย่างในตัวอย่างนั้นมีประสิทธิภาพมากขึ้นด้วยตัวกรองดิจิตอล แต่มีความกว้างน้อยที่สุดของหน้าต่าง (64 ตัวอย่างหรือมากกว่านั้นฉันจำไม่ได้แน่นอน) เมื่อมันเหมาะสมกว่าที่จะรวมการแปลง FFT ที่คุณสามารถมีตัวกรองอิฐในโดเมน freq ประสิทธิภาพไม่ใช่ปัญหาเดียว ตัวกรองอิฐหมายความว่าคุณต้องใช้ตัวอย่างจากอนาคตซึ่งเป็นไปไม่ได้ในเวลาจริง
Val

ขอบคุณฉันกำลังมองหาบางอย่างเช่นไซต์ประมวลผลสัญญาณ แต่หาไม่เจอ
Kouichi C. Nakamura

คำตอบ:


9

สาเหตุหลักที่การประมวลผลโดเมนความถี่ไม่ได้ทำโดยตรงคือเวลาแฝงที่เกี่ยวข้อง ในการดำเนินการพูด FFT บนสัญญาณคุณต้องบันทึกสัญญาณโดเมนเวลาทั้งหมดก่อนเริ่มต้นจนจบก่อนที่คุณจะสามารถแปลงเป็นโดเมนความถี่ได้ จากนั้นคุณสามารถทำการประมวลผลแปลงเป็นโดเมนเวลาและเล่นผลลัพธ์ แม้ว่าทั้งสองการแปลงและการประมวลสัญญาณอยู่ตรงกลางอย่างมีประสิทธิภาพทันทีคุณจะไม่ได้รับตัวอย่างผลลัพธ์แรกจนกว่าจะมีการบันทึกตัวอย่างอินพุตสุดท้าย แต่คุณสามารถรับผลลัพธ์ความถี่โดเมน "ดีเลิศ" ได้หากคุณเต็มใจที่จะทำสิ่งนี้ ตัวอย่างเช่นเพลง 3 นาทีที่บันทึกที่ 4,400 ตัวอย่าง / วินาทีนั้นคุณจะต้องทำการแปลง 8 ล้านจุด แต่นั่นไม่ใช่เรื่องใหญ่สำหรับซีพียูสมัยใหม่

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

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

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

(นี่เป็นเวอร์ชันขยายของคำตอบก่อนหน้าของฉัน )


1
ขอบคุณมากสำหรับคำตอบอย่างละเอียดในคำธรรมดา ตอนนี้ฉันเห็นแล้วว่าในคำถามของฉันฉันควรจะกล่าวว่างานของฉันส่วนใหญ่สำหรับการวิเคราะห์แบบออฟไลน์มากกว่าการประมวลผลออนไลน์หรือแบบเรียลไทม์ ฉันจะแก้ไขคำถาม จุดของคุณค่อนข้างชัดเจน: เนื่องจาก FFT ต้องการระยะเวลาทั้งหมดของข้อมูลคุณจึงรอจนกว่าการบันทึกจะเสร็จสิ้น
Kouichi C. Nakamura

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

ขอบคุณ ฉันค้นหา "ตัวกรองเชิงสาเหตุ" บน Wikipedia ตามคำนิยามรถ FFT ไม่สนใจเวลาดังนั้นฉันสามารถเห็นได้ว่ามันไม่ใช่สาเหตุ ธรรมชาตินั้นอธิบายว่าทำไมคุณไม่สามารถใช้มันเพื่อการกรองแบบเรียลไทม์
Kouichi C. Nakamura

3
@DaveTweed: การยืนยันของคุณเกี่ยวกับการใช้ FFT 8 ล้านจุดเพื่อกรองเพลง 3 นาทีที่สุ่มตัวอย่างที่ 44.1 kHz นั้นไม่ถูกต้อง ในความเป็นจริงแล้วอัลกอริทึมที่ใช้ FFT เป็นพื้นฐานที่ใช้กันอย่างแพร่หลายในทางปฏิบัติ มีการใช้วิธีการต่าง ๆ เช่นการทับซ้อนการบันทึกและการทับซ้อนเพิ่มเพื่อให้มีขนาด FFT ที่เรียบง่ายกว่า เทคนิคเหล่านี้ทำสิ่งที่ย่อหน้าที่สองของคุณแนะนำให้ใช้บล็อกขนาดเล็กขณะจัดการ "เอฟเฟกต์ขอบ" ที่เกิดขึ้นระหว่างพวกเขา
Jason R

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

2

แน่นอนคุณสามารถใช้ตัวกรองในอุดมคติ "boxcar" ในโดเมนความถี่ Duality กล่าวว่านี่เทียบเท่ากับการสนทนากับฟังก์ชัน sinc ของความยาวไม่ จำกัด เพื่อลดสิ่งประดิษฐ์ที่เกี่ยวข้องกับการสร้างความยาว จำกัด ฟังก์ชัน sinc มักถูกคูณด้วยหน้าต่าง คุณอาจเคยได้ยิน Hamming, Hanning (จริง ๆ แล้ว von Hann) ยกระดับโคไซน์และเทคนิคการทำหน้าต่างอื่น ๆ การสนทนาอาจง่ายกว่าการคำนวณ fft / ifft aproach แต่คำตอบเหมือนกัน

ทุกวิธีจะมีจุดอ่อนและจุดอ่อน บัตเตอร์เวิร์ ธ คือ IIR และบ็อกซ์คาร์คือ FIR Butterworths น่าจะราบเรียบในวงดนตรี pass แต่อาจมี rolloff ที่ชันน้อยขึ้นอยู่กับคำสั่งของ IIR และความกว้างของ FIR ตัวกรองจะยากกว่าในการนำมาใช้ในเวลาจริง


1
สำหรับคำอธิบายที่ชัดเจนมากเกี่ยวกับการกรองหน้าต่างและบล็อกการกรองให้ดูที่หนังสือตัวกรองดิจิตอลโดย RW Hamming วางจำหน่ายตั้งแต่โดเวอร์ราคาดีมาก ๆ (บังเอิญสกอตต์ฉันคิดว่านี่เป็นหน้าต่างที่มีชื่อว่า Hamming และ von Hann เป็นคนที่ได้รับชื่อของเขาถูกสังหารในการตั้งชื่อหน้าต่างของเขา)
The Photon

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

1
ตกลงสำหรับความยาวไม่ จำกัด ในอุดมคติ แต่ก็ไม่แน่ใจหลังจากตัดทอนและหน้าต่าง
Scott Seidman

@ThePhoton ขอบคุณสำหรับการแก้ไข Hamming / von Hann ไม่สามารถมองเห็นชั้นวางหนังสือของฉันอย่างถูกต้องจากบ้าน
Scott Seidman

@ โฟตอน ขอบคุณสำหรับหนังสือตัวกรองดิจิตอลของ Hamming ฉันดูมันและดูเหมือนจะเขียนขึ้นโดยเฉพาะสำหรับผู้เรียนระดับประถม ฉันซื้อมันด้วยความหวัง :)
Kouichi C. Nakamura

0

คำถามที่เกี่ยวข้อง

เหตุใดจึงเป็นความคิดที่ดีที่จะกรองโดยการทำให้ถังขยะ FFT เป็นศูนย์? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

การลบค่าออกจากผลลัพธ์ FFT เหมือนกับการกรองหรือไม่ /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

เหตุใดเราจึงใช้หน้าต่างในโดเมนเวลาแทนที่จะทำ FFT ปรับเปลี่ยนสเปกตรัมและแทนที่ผกผัน FFT /signals/8911/why-do-we-use-window-in-time-domain-rather -than-do-FFT-modify-the-สเปกตรัมและ T? noredirect = 1 & LQ = 1

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