ฉันจะคำนวณสเปคตรัมพลังงานระยะห่างที่บันทึกไว้ได้อย่างไร


20

ฉันต้องการคำนวณสเปกตรัมพลังงานซึ่งมีระยะห่างความถี่เป็นลอการิทึม

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

มีวิธีมาตรฐานในการทำเช่นนี้?

ฉันคิดว่าวิธีหนึ่งคือการเริ่มต้นpwelchด้วยความละเอียดสูงมาก (จำนวนค่าเฉลี่ยต่ำ) จากนั้นเริ่มต้นสเปกตรัมที่เกิดขึ้นใหม่โดยใช้การทำลอการิทึม


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

คำถาม SOที่เกี่ยวข้องของ OP สำหรับผู้ที่สนใจ
Lorem Ipsum

คำถามที่เกี่ยวข้องอีกข้อเกี่ยวกับ SO: stackoverflow.com/questions/9849233/…
nibot

คำตอบ:


9

ฉันพบกระดาษที่ตอบคำถามนี้โดยตรง:

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

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

การใช้ Matlab ที่นี่: https://github.com/tobin/lpsd

ป้อนคำอธิบายรูปภาพที่นี่ การเปิดเผยข้อมูล: ผู้เขียนบทความนี้อยู่ในสถาบันเดียวกันกับฉัน


1
อะไรคือประโยชน์ของการคำนวณคลื่นความถี่ด้วยวิธีนี้ แรงจูงใจสำหรับวิธีนี้คืออะไร?
Spacey

1
มันสามารถเร็วกว่าการคำนวณสเปกตรัมพลังงานโดยใช้ FFT จากนั้นจะเริ่มใหม่ในบางสถานการณ์
nibot

ฉันเริ่มใช้งาน Python: github.com/rudolfbyker/lpsdมันยังคงต้องการการทดสอบ ผลงานยินดีต้อนรับ
rudolfbyker

1

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

  1. w
  2. wtjXj

Px(ω)=12([ΣJXJcosω(เสื้อJ-τ)]2ΣJcos2ω(เสื้อJ-τ)+[ΣJXJบาปω(เสื้อJ-τ)]2ΣJบาป2ω(เสื้อJ-τ))

โปรดทราบว่านี่จะไม่ปรับขนาดเท่าที่จะเป็น FFT ดังนั้นฉันจะทำเช่นนี้หากจำนวนความถี่ที่ต้องการนั้นต่ำกว่า FFT มากซึ่งจะต้องรวบรวมข้อมูลทั้งหมด

มิฉะนั้นเราสามารถทำวิธีการแก้ไขหรือการสุ่มตัวอย่างอื่น ๆ ของ FFT หรือ DFT

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