ทำไมการแปลงฟูริเยร์ของคลื่นไซน์เดี่ยวจึงไม่กลายเป็นแท่งเดี่ยว?


12

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

ความถี่การสุ่มตัวอย่างมีผลเพียงเล็กน้อย (10kHz ที่นี่) อย่างไรก็ตามจำนวนรอบจะ:

หนึ่งรอบ:

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

100 รอบ:

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

100,000 รอบ:

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

ดูเหมือนว่าการแปลงฟูริเยร์มาบรรจบกันเป็นจำนวนรอบไม่สิ้นสุดทำไมจึงเป็นเช่นนั้น ไม่ควรมีหน้าต่างเวลาของหนึ่งรอบที่แน่นอนนำผลลัพธ์เดียวกันกับที่ของรอบ N?

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

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

PS: ภาพหน้าจอโดยเฉพาะอย่างยิ่งเหล่านี้จะขึ้นอยู่กับรหัสที่นี่


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

ขอบคุณสำหรับคำพูด คุณจะอธิบายได้อย่างไรว่าถ้าฉันเปลี่ยนหมายเลข NFFT เป็นความยาวของเวกเตอร์ผลลัพธ์จะเป็นแท่งเดียว
มิสเตอร์Mystère

1
คำถามที่ดี. สิ่งนี้เกิดขึ้นเนื่องจากข้อสันนิษฐานโดยธรรมชาติใน DFT สัญญาณความยาว จำกัด ที่กำหนดที่อินพุตของ DFT นั้นจะถูกขยายเป็นระยะ ๆ ในทั้งสองทิศทางด้วยระยะเวลาไม่ จำกัด ดังนั้นเมื่อคุณมีจำนวนเต็มรอบใน "รูรับแสง" ของ DFT คุณจะจบลงด้วยการเปลี่ยนแปลงของไซน์ซอยด์ระยะเวลาไม่ จำกัด : แรงกระตุ้นเดียว สิ่งนี้สอดคล้องกับกรณีของการรั่วไหลของสเปกตรัมศูนย์อย่างแน่นอนและไม่ค่อยเกิดขึ้นในทางปฏิบัติ
Jason R

คำตอบ:


30

นี่คือสิ่งประดิษฐ์หน้าต่าง

โค้ดที่เชื่อมโยงจะอัดสัญญาณตัวอย่าง 10,000 ค่าด้วยศูนย์เพื่อให้ความยาวเท่ากับกำลังสอง

%% Author :- Embedded Laboratory

%%This Project shows how to apply FFT on a signal and its physical 
% significance.

fSampling = 10000;          %Sampling Frequency
tSampling = 1/fSampling;    %Sampling Time
L = 10000;                  %Length of Signal
t = (0:L-1)*tSampling;      %Time Vector
F = 100;                    %Frequency of Signal

%% Signal Without Noise
xsig = sin(2*pi*F*t);
...

%%Frequency Transform of above Signal
subplot(2,1,2)
NFFT = 2^nextpow2(L);
Xsig = fft(xsig,NFFT)/L;
...

โปรดทราบว่าในรหัสข้างต้น FFT จะถูกนำมาใช้กับขนาด FFT NFFTซึ่งเป็นกำลังต่อไปของ 2 ที่ใหญ่กว่าความยาวของสัญญาณ (ในกรณีนี้คือ 16,384) จากเอกสารMathworksfft() :

Y = fft(X,n)ส่งคืน N-point DFT fft(X)เทียบเท่ากับfft(X, n)ที่nคือขนาดของXในมิติ nonsingleton แรก ถ้าความยาวของXมีค่าน้อยกว่าn, มีเบาะที่มีต่อท้ายเลขศูนย์ให้มีความยาวX nหากความยาวของXมากกว่าnลำดับXจะถูกตัดทอน เมื่อXเป็นเมทริกซ์ความยาวของคอลัมน์จะถูกปรับในลักษณะเดียวกัน

ซึ่งหมายความว่าคุณไม่ได้ใช้ FFT ของ 'คลื่นไซน์บริสุทธิ์' จริงๆ - คุณกำลังถ่าย FFT ของคลื่นไซน์ด้วยสัญญาณแบนหลังจากนั้น

นี่เทียบเท่ากับการใช้ FFT ของคลื่นไซน์คูณกับฟังก์ชันหน้าต่างสี่เหลี่ยม คลื่นความถี่ FFT นั้นเป็นสังวัตนาของคลื่นความถี่ไซน์ (ฟังก์ชันแรงกระตุ้น) กับคลื่นความถี่คลื่นสี่เหลี่ยม (sinc (f))

หากคุณเปลี่ยนL = 16,384เพื่อให้ไม่มีการซ้อนทับของสัญญาณคุณจะสังเกตperfectFFT

คำค้นหาเพิ่มเติม: "Spectral Leakage", "Window Function", "Hamming Window"


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


มันอยู่ตรงหน้าฉันตลอดเวลานี้ คุณทำได้ดีมากฉันเพิ่งเปลี่ยนหมายเลข NFFT เป็นความยาวของเวกเตอร์และทำตามนั้น
มิสเตอร์Mystère

1
@ MisterMystère: ดูการแก้ไขสำหรับลิงก์ไปยังเนื้อหาที่เกี่ยวข้องที่ฉันเขียนในมหาวิทยาลัย คำอธิบายที่ละเอียดยิ่งขึ้นรวมถึงรูปภาพ
Li-aung Yip

(แม้ว่าฉันลืมที่จะพิมพ์สูตรคณิตศาสตร์อีกครั้ง - แก้ไขแล้ว)
Li-aung Yip

เพียงแค่เตือนว่ามีประโยชน์เล็ก ๆ น้อย ๆ ที่จะขยายการใช้ nextpow2 algoriths MATLAB FFT ซึ่งผมเชื่อว่าเป็น FFTW (ฟูเรียร์ที่เร็วที่สุดในตะวันตก)
สกอตต์เซดแมน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.