FFT (หรือเร็วแปลงฟูเรีย) เป็นจริงอัลกอริทึมในการคำนวณที่ไม่ต่อเนื่องฟูริเยร์แปลงหรือ DFT การนำไปใช้โดยทั่วไปจะทำให้การคำนวณ DFT เป็นไปอย่างรวดเร็วโดยการใช้ประโยชน์จากข้อเท็จจริงที่ว่า , จำนวนจุดข้อมูลเป็นจำนวนเต็มรวมซึ่งไม่ใช่กรณีที่นี่เนื่องจากเป็นจำนวนเฉพาะ (แม้ว่า FFTs จะมีอยู่ในกรณีที่เป็นไพรม์ แต่ก็ใช้สูตรอื่นที่อาจนำไปใช้หรือไม่ได้ใช้ใน MATLAB) แท้จริงแล้วหลายคนจงใจเลือก
ให้อยู่ในรูปแบบหรือเพื่อเร่งการคำนวณ DFT ผ่าน FFT101 N N 2 k 4 kN101NN2k4k
เมื่อหันไปใช้คำถามว่าทำไมการสะท้อนจึงเกิดขึ้น hotpaw2 ได้ระบุเหตุผลไว้อย่างชัดเจนและต่อไปนี้เป็นเพียงการกรอกรายละเอียด DFT ของลำดับของ
จุดข้อมูลถูกกำหนดให้เป็นลำดับโดยที่
โดยที่{-1} จะเห็นได้ชัดว่าคือโดยทั่วไปแล้วลำดับที่ซับซ้อนตามตัวอักษรแม้ว่าเป็นลำดับที่มีมูลค่าจริง แต่ทราบว่าเมื่อไหร่x=(x[0],x[1],x[2],…,x[N−1])NX=(X[0],X[1],X[2],…,X[N−1])
X[m]=∑n=0N−1x[n](exp(−j2πmN))n,m=0,1,…,N−1
j=−1−−−√Xxxเป็นลำดับจริงมูลค่าเป็นจำนวนจริง นอกจากนี้หากเป็น
แม้กระทั่งจำนวนแล้วตั้งแต่เรายังมีที่
เป็นจำนวนจริง แต่ไม่ว่าจะเป็นเลขคี่หรือแม้กระทั่ง DFTของลำดับที่มีมูลค่าจริง
มีคุณสมบัติ
สมมาตรของ Hermitianที่คุณได้กล่าวถึงในความคิดเห็น เรามีการ
แก้ไข ,
X[0]=∑n=0N−1x[n]Nexp(−jπ)=−1X[N2]=∑n=0N−1x[n](exp(−j2πN/2N))n=∑n=0N−1x[n](−1)n
NXx m1≤m≤N−1,
ดังนั้นสำหรับ , * ในกรณีพิเศษนี้โปรดทราบว่าถ้าเราเลือกเมื่อเป็นคู่เราจะได้ซึ่งเป็นการยืนยันของเรา ข้อสรุปก่อนหน้านี้ที่
X[m]X[N−m]=∑n=0N−1x[n](exp(−j2πmN))n=∑n=0N−1x[n](exp(−j2πN−mN))n=∑n=0N−1x[n](exp(−j2π+j2πmN))n=∑n=0N−1x[n](exp(j2πmN))n=(X[m])∗
1≤m≤N−1X[N−m]=(X[m])∗m=N/2NX[N/2]=(X[N/2])∗X[N/2]เป็นจำนวนจริง โปรดทราบว่าผลกระทบของคุณสมบัติสมมาตรของ Hermitian คือ
-th ถังในผิวเผินลำดับมูลค่าจริงที่มีขนาดเดียวกันเป็นถัง -thm(N−m)
คน MATLABi จะต้องแปลสิ่งนี้เป็นบัญชีเพราะอาร์เรย์ของ MATLAB นั้นมีหมายเลขตั้งแต่ขึ้นไป1
เมื่อหันไปใช้ข้อมูลจริงของคุณคือค่า DC เท่ากับบวก
มากกว่าหนึ่งช่วงเวลาของความถี่ไซน์เฮิร์ตเล็กน้อย อันที่จริงสิ่งที่คุณจะได้รับคือ
ที่1 ดังนั้นตัวอย่างแรกและตัวสุดท้ายของจึงมีค่าเท่ากัน DFT ที่คุณกำลังคำนวณนั้นได้รับจาก
ความไม่ตรงกันระหว่างและ ทำให้เกิดความยุ่งเหยิงใน DFT: ค่าของ
x11
x[n]=1+sin(2π(0.01n)), 0≤n≤100
x[0]=x[100]=1101X[m]=∑n=0100(1+sin(2π(n100)))(exp(−j2πm101))n
100101X[m]สำหรับไม่ใช่ศูนย์แม้ว่าเล็ก ในทางกลับกันสมมติว่าคุณต้องปรับอาเรย์ในโปรแกรม MATLAB ของคุณให้มีตัวอย่างที่ดังนั้นสิ่งที่คุณมีคือ
จากนั้น DFT คือ
คุณจะเห็นว่าผิวเผินของคุณจะ
ว่า (หรืออย่างน้อยภายในปัดเศษข้อผิดพลาด) และ
ผกผัน DFT จะให้ที่ ,
2≤m≤99t
100t=0,0.01,0.02,…,0.99x[n]=1+sin(2π(0.01n)), 0≤n≤99.
X[m]=∑n=099(1+sin(2π(n100)))(exp(−j2πm100))n,
X=(100,−50j,0,0,…,0,50j)0≤n≤99x[n]=1100∑m=099X[m](exp(j2πn100))m=1100[100−50jexp(j2πn100)1+50j(exp(j2πn100))99]=1+12j[exp(j2πn100)−exp(j2π−n100)]=1+sin(2π(0.01n))
ซึ่งเป็นสิ่งที่คุณเริ่มต้นอย่างแม่นยำ