DFT - การลบเอฟเฟกต์หน้าต่างในโดเมนสเปกตรัมด้วย convolution


11

ฉันกำลังคิดเกี่ยวกับเรื่องการเลื่อนหน้าต่าง DFT และความคิดเข้ามาในใจของฉัน DFT จะให้คลื่นความถี่ของสัญญาณที่ซับซ้อนด้วยสเปกตรัมของหน้าต่างที่ใช้ดังนั้นจึงมีก้อนหลักและก้อนด้านข้าง

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

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

ด้านซ้ายคือสเปกตรัมต้นฉบับที่สร้างด้วยหน้าต่างการแฮ็ก ขวาเป็นสเปกตรัมที่ซับซ้อนโดย DFT ของหน้าต่าง hanning ด้านบนคือสเปกตรัมเองด้านล่างคือfindpeaksผลลัพธ์ของMATLAB

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

จากสิ่งที่ฉันเห็นสิ่งนี้สามารถช่วยให้การตรวจจับสูงสุดอย่างที่เราเห็นในภาพก่อนหน้า นอกจากนี้ดูเหมือนว่าสเปกตรัมจะมีการบิดเบือนเล็กน้อยเช่นที่เราเห็นในภาพต่อไปนี้ 2 :

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

ที่ซึ่งกราฟสีน้ำเงินคือสเปกตรัมและกราฟสีแดงคือสเปกตรัมที่ซับซ้อน

  • มีความคิดเห็นเกี่ยวกับเรื่องนี้ไหม?
  • มีปัญหาที่อาจเกิดขึ้นจากการสนทนาโพสต์ FFT นี้หรือไม่?
  • กระดาษชนิดใดที่ใช้กับตัวแบบ?

แก้ไข

คุณสามารถค้นหาสคริปต์ที่นี่ซึ่งจะสร้างกราฟต่อไปนี้:

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


1
คุณสามารถให้รหัสที่คุณใช้ในการพล็อตตัวเลขได้หรือไม่? ฉันคิดว่าความเรียบของฟังก์ชั่น convolved นั้นเป็นเพียงปัญหาของการแก้ไข คุณไม่สามารถยกเลิกการทำวินโดว์ด้วยการสังเกตุได้อีกครั้งด้วยหน้าต่างเดียวกัน (แน่นอนคุณต้องยกเลิกการสนทนาซึ่งเป็นสิ่งที่คำตอบของ rbj อ้างถึง) นอกจากนี้การปรับปรุงที่แท้จริงจะเป็นการเพิ่มความละเอียดของความถี่และ / หรือการปราบปราม sidelobe ที่เพิ่มขึ้นซึ่งไม่สามารถทำได้ที่นี่ การค้นหาจุดสูงสุด "ถูกต้อง" นั้นค่อนข้างง่ายสำหรับทั้งสองฟังก์ชัน
Matt L.

ฉันเพิ่งแก้ไขโพสต์ของฉันเพื่อเพิ่มตัวอย่างของรหัส
บทเรียนบทที่ Pier-Yves

คำตอบ:


1

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

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

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

อย่างไรก็ตามคำแนะนำของคุณยังคงมีประโยชน์สำหรับการระบุตัวตนสูงสุด!


1

อยู่อย่างซื่อสัตย์กับหัวข้อ "การลบเอฟเฟ็กต์หน้าต่างในโดเมน freq ผ่านทางข้อตกลง" (แม้ OP อาจจะต้องการสิ่งอื่นหรือสิ่งที่คล้ายกัน) แต่ฉันรู้สึกว่าการเพิ่มความคิดเห็นของฉันมีประสบการณ์ส่วนตัวกับหัวข้อเฉพาะนี้

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

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

มารับหน้าต่างของฮันน์ สูตรโดเมนเวลาคือ y = (1-cos (pi * x)) / 2 โดยมี x ตั้งแต่ศูนย์ถึงและยกเว้นหนึ่งเฟรม การแทนโดเมนความถี่ที่สอดคล้องกันคือ bin0 = (0.5,0i), bin1 = (- 0.5,0i) ในการลบเอฟเฟกต์ในโดเมนเวลาคุณอาจต้องการแบ่งสัญญาณโดยฟังก์ชั่นหน้าต่างดังกล่าวข้างต้น ในการทำเช่นเดียวกันกับโดเมนความถี่คุณสามารถโน้มน้าวให้สเปกตรัมยกเลิกการเรียงลำดับสเปกตรัมของฟังก์ชันที่กล่าวถึงได้ เนื่องจากฟังก์ชั่นนี้มีค่าศูนย์ที่ปลายทั้งสอง (จริง ๆ แล้วมันเป็นศูนย์ทางคณิตศาสตร์เฉพาะที่จุดแรกยกเว้นข้อผิดพลาดในการปัดเศษ) เพื่อหลีกเลี่ยงความไม่มีที่สิ้นสุดคุณสามารถแลกเปลี่ยนอนันต์ด้วยค่ามากเช่น 10,000 ผลที่ได้จากการบิดเช่นนี้เป็นคลื่นความถี่ที่ไม่มีหน้าต่าง ด้วยการแปลงเป็นโดเมนเวลาย้อนหลัง

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


0

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

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

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


6
ในหลักการฉันเห็นด้วยกับข้อความของคุณ ถึงแม้ว่า OP จะไม่ได้พูดถึง deconvolution แต่เป็นการโน้มน้าวสเปกตรัมที่ได้รับด้วยสเปกตรัมของหน้าต่าง hanning (เช่นหน้าต่างหลักกับหน้าต่าง hanning-squared)
Maximilian Matthé

1
ไม่ OP กำลังพูดถึงการลบเอฟเฟกต์ไม่เพิ่มเอฟเฟกต์เป็นสองเท่า การหารนั้นเหมือนกับการคูณด้วยส่วนกลับ มันจะคูณด้วยเช่นตัวเลขที่ช่วยให้คุณมีผลที่เราเรียกว่าเป็นความฉลาด การที่การโน้มน้าวใจในโดเมนหนึ่งนั้นเหมือนกับการคูณในโดเมนอื่นดังนั้นการ deconvolution ก็เหมือนกับการโน้มน้าวใจกับสิ่งที่พิจารณาเป็นพิเศษ
robert bristow-johnson

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

1
ไม่อย่างนั้น ฉันทำการโน้มน้าวขนาดของสเปกตรัมซึ่งให้ผลลัพธ์ที่แตกต่างจากการคูณของหน้าต่างกำลังสอง ฉันไม่แน่ใจว่ามันหมายถึงทางคณิตศาสตร์ ... ฉันเห็นว่ามันเป็นความสัมพันธ์ข้ามระหว่างขนาดสเปกตรัมทั้งสอง (ตั้งแต่ spectrums windows มีความสมมาตร)
บทสนทนา Pier-Yves

0

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


วิธีที่ฉันเข้าใจคือว่าฉันกำลังทำความสัมพันธ์ข้ามกับสเปกตรัมก่อนที่จะได้รับยอดเขาในใจกลางของกลีบหลัก การใช้หน้าต่างโดเมนเวลาดูเหมือนเป็นตัวเลือกที่ชัดเจนและฉันไม่เห็นว่าทำไมฉันจึงต้องใช้ความสัมพันธ์ข้ามช่องหน้าต่างเพื่อค้นหาว่าที่ตั้งของสเปกตรัมหน้าต่าง hanning อยู่ที่ไหน ทำไมเราต้องการสิ่งอื่นนอกเหนือจากหน้าต่างเดียวกัน
Pier-Yves Lessard

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