คำถามติดแท็ก fft

การแปลงฟูริเยร์ที่รวดเร็วเป็นอัลกอริธึมที่มีประสิทธิภาพในการคำนวณการแปลงฟูริเยร์แบบแยก (DFT) และอินเวอร์ส

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

3
เหตุใดจึงเป็นความคิดที่ดีในการกรองโดยการทำให้ถังขยะ FFT เป็นศูนย์?
มันง่ายมากในการกรองสัญญาณโดยการทำ FFT ที่มันลบช่องว่างบางส่วนแล้วทำการ IFFT ตัวอย่างเช่น t = linspace(0, 1, 256, endpoint=False) x = sin(2 * pi * 3 * t) + cos(2 * pi * 100 * t) X = fft(x) X[64:192] = 0 y = ifft(X) ส่วนประกอบความถี่สูงจะถูกลบออกอย่างสมบูรณ์โดยตัวกรอง FFT "brickwall" นี้ แต่ฉันได้ยินมาว่านี่ไม่ใช่วิธีการที่ดีที่จะใช้ เหตุใดจึงเป็นความคิดที่ไม่ดี มีสถานการณ์ที่เป็นตัวเลือกที่ดีหรือไม่? [ ตามที่แนะนำโดย pichenettes ]
72 fft  filters 

7
ฉันจะใช้การเชื่อมโยงข้ามกันเพื่อพิสูจน์ไฟล์เสียงสองไฟล์ที่เหมือนกันได้อย่างไร
ฉันต้องทำ cross correlation ของไฟล์เสียงสองไฟล์เพื่อพิสูจน์ว่ามันคล้ายกัน ฉันใช้ FFT ของไฟล์เสียงสองไฟล์และมีค่าสเปกตรัมพลังงานในอาร์เรย์แยกต่างหาก ฉันจะดำเนินการต่อเพื่อข้ามสหสัมพันธ์และพิสูจน์ว่าพวกเขาคล้ายกันได้อย่างไร มีวิธีที่ดีกว่าที่จะทำหรือไม่ แนวคิดพื้นฐานใด ๆ จะเป็นประโยชน์สำหรับฉันในการเรียนรู้และนำไปใช้

9
มีอัลกอริทึมสำหรับค้นหาความถี่ที่ไม่มี DFT หรือ FFT หรือไม่
ฉันกำลังค้นหาแอพสโตร์ Android สำหรับนักกีต้าร์ ฉันพบแอปเครื่องรับที่อ้างว่าเร็วกว่าแอปอื่น ๆ มันอ้างว่าสามารถหาความถี่ได้โดยไม่ต้องใช้ DFT (ฉันหวังว่าฉันจะยังมี URL ตามข้อกำหนดนี้) ฉันไม่เคยได้ยินเรื่องนี้ คุณสามารถรับสัญญาณเสียงและคำนวณความถี่โดยไม่ใช้อัลกอริทึม DFT หรือ FFT ได้หรือไม่?
34 audio  fft  frequency  dft 

3
การเลือกตัวกรองที่ถูกต้องสำหรับข้อมูลมาตรวัดความเร่ง
ฉันค่อนข้างใหม่สำหรับ DSP และได้ทำการวิจัยบางอย่างเกี่ยวกับตัวกรองที่เป็นไปได้สำหรับการทำให้ข้อมูล accelerometer ใน python ราบรื่นขึ้น ตัวอย่างประเภทของข้อมูลที่ป่วยจะเห็นได้ในภาพต่อไปนี้: โดยพื้นฐานแล้วฉันกำลังมองหาคำแนะนำในการทำให้ข้อมูลนี้ราบรื่นในที่สุดเพื่อแปลงเป็นความเร็วและการกระจัด ฉันเข้าใจว่า accelerometers จากโทรศัพท์มือถือมีเสียงดังมาก ฉันไม่คิดว่าฉันสามารถใช้ตัวกรองคาลมานได้ในขณะนี้เพราะฉันไม่สามารถถืออุปกรณ์เพื่ออ้างอิงเสียงที่เกิดจากข้อมูลได้ (ฉันอ่านว่าจำเป็นที่จะต้องวางอุปกรณ์ให้แบนและหาเสียงจากการอ่านเหล่านั้นหรือไม่) FFT ให้ผลลัพธ์ที่น่าสนใจ หนึ่งในความพยายามของฉันคือ FFT สัญญาณการเร่งความเร็วจากนั้นแสดงความถี่ต่ำให้มีค่า FFT สัมบูรณ์เป็น 0 จากนั้นฉันใช้เลขคณิตโอเมก้าและผกผัน FFT เพื่อให้ได้พล็อตเรื่องความเร็ว ผลการวิจัยพบว่า นี่เป็นวิธีที่ดีในการไปต่าง ๆ หรือไม่? ฉันกำลังพยายามลบลักษณะโดยรวมของสัญญาณรบกวน แต่ต้องมีการระบุจุดสูงสุดอย่างชัดเจนเช่นประมาณ 80 วินาที ฉันยังเหนื่อยกับการใช้ low pass filter กับข้อมูล accelerometer ดั้งเดิมซึ่งทำได้ดีมากในการทำให้เรียบ แต่ฉันไม่แน่ใจว่าจะไปจากที่นี่ได้อย่างไร คำแนะนำเกี่ยวกับสถานที่ที่จะไปจากที่นี่จะเป็นประโยชน์จริง ๆ ! แก้ไข: รหัสเล็กน้อย: for i in range(len(fz)): …
28 fft  python 

5
มีศัพท์เทคนิคหรือไม่สำหรับวิธีง่ายๆในการทำให้สัญญาณเรียบ
ประการแรกฉันยังใหม่กับ DSP และไม่มีการศึกษาจริงในนั้น แต่ฉันกำลังพัฒนาโปรแกรมสร้างภาพเสียงและฉันเป็นตัวแทนของอาร์เรย์ FFT เป็นแถบแนวตั้งเช่นเดียวกับการสร้างภาพคลื่นความถี่ทั่วไป ปัญหาที่ฉันมีคือค่าสัญญาณเสียงเปลี่ยนไปเร็วเกินไปที่จะสร้างเอาต์พุตภาพที่น่าพอใจถ้าฉันเพิ่งแมปค่า FFT โดยตรง: ดังนั้นฉันจึงใช้ฟังก์ชั่นง่าย ๆ กับค่าต่างๆเพื่อ "ทำให้เรียบ" ผลลัพธ์: // pseudo-code delta = fftValue - smoothedFftValue; smoothedFftValue += delta * 0.2; // 0.2 is arbitrary - the lower the number, the more "smoothing" กล่าวอีกนัยหนึ่งฉันกำลังใช้ค่าปัจจุบันและเปรียบเทียบกับค่าล่าสุดจากนั้นเพิ่มเศษส่วนของเดลต้านั้นให้เป็นค่าสุดท้าย ผลลัพธ์จะเป็นดังนี้: ดังนั้นคำถามของฉันคือ: นี่เป็นรูปแบบหรือฟังก์ชั่นที่ได้รับการยอมรับเป็นอย่างดีซึ่งคำศัพท์นี้มีอยู่แล้ว คำนี้คืออะไร? ฉันใช้ "การปรับให้เรียบ" ด้านบน แต่ฉันรู้ว่านี่หมายถึงบางสิ่งที่เฉพาะเจาะจงมากใน DSP และอาจไม่ถูกต้อง นอกเหนือจากนั้นอาจเกี่ยวข้องกับซองจดหมายที่มีปริมาณมาก …

4
เวฟเล็ตแปลงค่าสัมประสิทธิ์ความถี่ใด
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เนื่องจากสามารถตอบได้ในการประมวลผลสัญญาณ Stack Exchange อพยพ 8 ปีที่ผ่านมา ด่วนแปลงฟูเรียใช้เวลาการดำเนินงานในขณะที่จานด่วนแปลงเวฟเล็ตใช้เวลา(N) แต่ FWT คำนวณอะไรโดยเฉพาะ?O(NlogN)O(Nlog⁡N)\mathcal O(N \log N)O(N)O(N)\mathcal O(N) แม้ว่าจะมีการเปรียบเทียบบ่อยครั้ง แต่ดูเหมือนว่า FFT และ FWT เป็นแอปเปิ้ลและส้ม ตามที่ฉันเข้าใจมันจะเป็นการดีกว่าที่จะเปรียบเทียบ STFT (FFTs ของชิ้นเล็ก ๆ เมื่อเวลาผ่านไป) กับMorlet WT ที่ซับซ้อนเนื่องจากทั้งคู่เป็นตัวแทนความถี่เวลาตามไซนัสที่ซับซ้อน (โปรดแก้ไขฉันหากฉันผิด ) นี่มักจะแสดงด้วยแผนภาพดังนี้: ( อีกตัวอย่าง ) ทางด้านซ้ายแสดงให้เห็นว่า STFT เป็นพวงของ FFTs ซ้อนกันอยู่ด้านบนของเวลาที่ผ่านไป (การแสดงนี้เป็นที่มาของspectrogram ) ในขณะที่ด้านขวาแสดง dyadic WT ซึ่งมีความละเอียดเวลาที่ดีกว่าที่ความถี่สูงและความถี่ที่ดีขึ้น ความละเอียดที่ความถี่ต่ำ …
26 frequency  fft  wavelet 

1
ทับซ้อนเพิ่มกับทับซ้อนกันบันทึก
ความแตกต่างหรือเกณฑ์อื่นใดที่สามารถใช้ในการตัดสินใจระหว่างการใช้การทับซ้อนกันเพิ่มและการทับซ้อนกันบันทึกสำหรับการกรอง? ทั้งการทับซ้อน - เพิ่มและการทับซ้อน - บันทึกอธิบายว่าเป็นอัลกอริธึมสำหรับการทำสังวัตนาที่รวดเร็วของการสตรีมข้อมูลอย่างรวดเร็วด้วยเคอร์เนล FIR ความหน่วงแฝงประสิทธิภาพการคำนวณหรือความแตกต่างของแคช (ฯลฯ ) มีความแตกต่างกันถ้ามี? หรือพวกเขาเหมือนกันหรือไม่

1
ตัวกรองความถี่ต่ำและ FFT สำหรับผู้เริ่มต้นด้วย Python
ฉันใหม่กับการประมวลผลสัญญาณและโดยเฉพาะอย่างยิ่งกับ FFT ดังนั้นฉันไม่แน่ใจว่าฉันกำลังทำสิ่งที่ถูกต้องที่นี่และฉันสับสนเล็กน้อยกับผลลัพธ์ ฉันมีฟังก์ชั่นจริงที่ไม่ต่อเนื่อง (ข้อมูลการวัด) และต้องการตั้งค่าตัวกรองความถี่ต่ำผ่านในนั้น เครื่องมือที่เลือกคือ Python พร้อมแพ็คเกจ numpy ฉันทำตามขั้นตอนนี้: คำนวณค่า fft ของฟังก์ชั่นของฉัน ตัดความถี่สูง ดำเนินการ fft ผกผัน นี่คือรหัสที่ฉันใช้: import numpy as np sampling_length = 15.0*60.0 # measured every 15 minutes Fs = 1.0/sampling_length ls = range(len(data)) # data contains the function freq = np.fft.fftfreq(len(data), d = sampling_length) fft = …

4
วิธีแยกเสียงจากการกรน
พื้นหลัง: ฉันกำลังทำงานกับโปรแกรม iPhone (พาดพิงถึงใน หลาย อื่น ๆ โพสต์ ) ที่ "ฟัง" นอนกรน / การหายใจในขณะที่หนึ่งคือนอนหลับและกำหนดว่ามีสัญญาณของการหยุดหายใจขณะหลับ (ในขณะที่ก่อนหน้าจอสำหรับ "นอนห้องปฏิบัติการ" การทดสอบ) แอปพลิเคชั่นส่วนใหญ่ใช้ "ความแตกต่างของสเปกตรัม" เพื่อตรวจจับกรน / ลมหายใจและทำงานได้ค่อนข้างดี (มีความสัมพันธ์ 0.85--0.90) เมื่อทดสอบกับการบันทึกแล็บในห้องปฏิบัติการ (ซึ่งจริง ๆ แล้วค่อนข้างมีเสียงดัง) ปัญหา: เสียง "ห้องนอน" ส่วนใหญ่ (พัดลม ฯลฯ ) ฉันสามารถกรองด้วยเทคนิคต่าง ๆ และมักจะตรวจจับการหายใจในระดับ S / N ที่หูมนุษย์ไม่สามารถตรวจพบได้อย่างน่าเชื่อถือ ปัญหาคือเสียงรบกวน ไม่ใช่เรื่องผิดปกติที่จะมีโทรทัศน์หรือวิทยุทำงานในพื้นหลัง (หรือเพียงแค่ให้ใครบางคนกำลังพูดอยู่ในระยะไกล) และจังหวะของเสียงที่ใกล้เคียงกับการหายใจ / การนอนกรน ในความเป็นจริงฉันใช้งานการบันทึกของ Bill …

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

3
ความล่าช้าในโดเมนเวลามีผลกระทบอะไรในโดเมนความถี่
ถ้าฉันมีสัญญาณที่มีเวลา จำกัด บอกว่าไซนัสนั้นใช้เวลาเพียงวินาทีและฉันรับสัญญาณ FFT ของสัญญาณนั้นฉันเห็นการตอบสนองความถี่ ในตัวอย่างนี้จะเป็นการขัดขวางที่ความถี่หลักของไซนัสTTT ทีนี้สมมติว่าฉันรับสัญญาณในเวลาเดียวกันและหน่วงเวลาบางค่าคงที่แล้วใช้ FFT สิ่งต่าง ๆ เปลี่ยนแปลงได้อย่างไร FFT สามารถแสดงเวลาล่าช้าได้หรือไม่ ฉันรับรู้ว่าการหน่วงเวลาหมายถึงการเปลี่ยนแปลงในโดเมนความถี่ แต่ฉันมีเวลาที่ยากลำบากในการพิจารณาความหมายที่แท้จริงประสบการณ์( - j ω t )ประสบการณ์⁡(-Jωเสื้อ)\exp(-j\omega t) การพูดในทางปฏิบัติโดเมนความถี่เป็นสถานที่ที่เหมาะสมในการกำหนดเวลาหน่วงระหว่างสัญญาณต่างๆหรือไม่?

2
การปรับปรุงความละเอียด spectrogram ใน Python?
ฉันใช้specgram()ฟังก์ชั่นในmatplotlibการสร้างไฟล์คลื่นเสียงพูดใน Python แต่ผลลัพธ์นั้นมีคุณภาพด้อยกว่าอย่างมากสำหรับซอฟท์แวร์ถอดรหัสปกติของฉัน Praat สามารถสร้างได้ ตัวอย่างเช่นสายต่อไปนี้: specgram( fromstring(spf.readframes(-1), 'Int16'), Fs=framerate, cmap=cm.gray_r, ) สร้างสิ่งนี้: ขณะที่ Praat ทำงานกับตัวอย่างเสียงเดียวกันด้วยการตั้งค่าต่อไปนี้: ระยะการมอง: 0-8000Hz ความยาวหน้าต่าง: 0.005 วินาที ช่วงแบบไดนามิก: 70dB ขั้นตอนเวลา: 1,000 ขั้นตอนความถี่: 250 รูปร่างหน้าต่าง: Gaussian สร้างสิ่งนี้: ผมทำอะไรผิดหรือเปล่า? ฉันได้ลองเล่นซอกับspecgram()พารามิเตอร์ทั้งหมดแต่ดูเหมือนว่าไม่มีอะไรที่จะปรับปรุงความละเอียด ฉันแทบไม่มีประสบการณ์กับ FFT

3
เคล็ดลับสำหรับการปรับปรุงการตรวจจับพิช
ฉันกำลังทำงานกับเว็บแอปง่าย ๆ ที่ให้ผู้ใช้ปรับแต่งกีตาร์ของเขา / เธอ ฉันเป็นผู้เริ่มต้นที่แท้จริงในการประมวลผลสัญญาณดังนั้นอย่าตัดสินยากเกินไปหากคำถามของฉันไม่เหมาะสม ดังนั้นฉันจึงจัดการเพื่อให้ได้ความถี่พื้นฐานโดยใช้อัลกอริทึม FFT และ ณ จุดนี้แอปพลิเคชันนั้นสามารถใช้งานได้ อย่างไรก็ตามมีห้องพักสำหรับการปรับปรุงตอนนี้ฉันส่ง pcm ดิบไปยังอัลกอริทึม FFT แต่ฉันคิดว่าอาจจะมีอัลกอริทึม / ตัวกรอง / ตัวกรองล่วงหน้าที่อาจปรับปรุงการตรวจจับ คุณช่วยแนะนำอะไรได้บ้าง ปัญหาหลักของฉันคือเมื่อตรวจพบความถี่ที่แน่นอนมันจะแสดงความถี่นั้นเป็นเวลา 1-2 วินาทีแล้วกระโดดไปยังความถี่สุ่มอื่น ๆ และกลับมาอีกครั้งและต่อ ๆ ไปแม้ว่าเสียงจะดังต่อเนื่อง ฉันยังสนใจในการเพิ่มประสิทธิภาพประเภทอื่น ๆ หากมีประสบการณ์กับสิ่งเหล่านี้

2
การใช้อัลกอริทึมของ Goertzel ให้ความละเอียดของความถี่ดีขึ้นจริงหรือ
ฉันกำลังอ่านบทความนี้และฉันสับสนเล็กน้อยจากการใช้ 'การแก้ไขความถี่' แบบเสรีนิยมของผู้เขียนเกี่ยวกับอัลกอริทึมของ Goertzel คำถามพื้นฐาน: การใช้อัลกอริธึม Goertzel จริง ๆ แล้วจะให้ความละเอียดความถี่มากกว่าย่านความถี่ที่คุณสนใจหรือไม่เพียงแค่คำนวณ FFT อย่างมีประสิทธิภาพเหนือย่านความถี่เฉพาะที่ระบุ แต่ที่ความละเอียดความถี่เดียวกันที่ระบุโดยความถี่สุ่มหารด้วยจำนวน ของกลุ่มตัวอย่าง? ตัวอย่างเช่นสมมติว่าคือ 100 KHz (คงที่) และจำนวนตัวอย่างข้อมูลคือ 10000 (เช่นแก้ไข) หากฉันคำนวณ FFT ปกติโดยที่ความยาว FFT เป็นความละเอียดความถี่ของฉันคือตามที่คาดไว้และจะเท่ากับ 10 Hz ซึ่งหมายความว่าช่องเก็บเงินของฉันคั่นด้วย 10 Hz จาก -50,000 Hz ถึง 50,000 Hz N N F sFsFsF_sยังไม่มีข้อความยังไม่มีข้อความNยังไม่มีข้อความยังไม่มีข้อความNFsยังไม่มีข้อความFsยังไม่มีข้อความ\frac{F_s}{N} ตอนนี้ให้เราบอกว่าฉันต้องการใช้อัลกอริทึม Geortzel เพื่อดูความถี่ในช่วงของการพูด 20,000-21,000 เฮิร์ตซ์ หากฉันใช้เดียวกันสำหรับจำนวนตัวอย่างและใช้เดียวกันสำหรับขนาด FFT ของฉันการแก้ไขความถี่ของฉันคืออะไร ยัง …

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