MATLAB:และ scaling


11

ใน MATLAB ผลลัพธ์ของfftและ / หรือifftฟังก์ชั่นมักจะต้องการการประมวลผลเพิ่มเติมก่อนที่จะได้รับการพิจารณาเพื่อการวิเคราะห์

ฉันเคยได้ยินความคิดเห็นที่แตกต่างมากมายในสิ่งที่ถูกต้อง:

  • ขูดหินปูน

    Mathworks ระบุว่าfftและifftฟังก์ชันจะขึ้นอยู่กับสมการต่อไปนี้:

    X[k]=11n=1Nx[n]ej2π(k1)(n1)N,where1kNx[n]=1Nk=1NX[k]e+j2π(k1)(n1)N,where1nN
  • ปรับขนาดตามความยาวของสัญญาณ

    เพื่อนของฉันมักจะไต่ข้อมูลโดยทันทีหลังจากที่การประมวลผล (เราไม่พิจารณาข้อมูลดิบก่อนการปรับขนาด)1Nfft
    fft

    %% ดำเนินการ fft
    X_f = fft (x, n_sample, 1) / n_sample; % fft จะต้องถูกทำให้เป็นมาตรฐานด้วยจำนวนตัวอย่างในข้อมูล การประชุมนี้ถูกกำหนดโดยนักพัฒนาซอฟต์แวร์ (Mathworks)

    ถูกต้องหรือไม่

    1. ถ้าเป็นเช่นนั้นทำไมifftฟังก์ชั่นMATLAB จึงคาดว่าเรายังไม่ได้ลดขนาดเป็นแล้ว?1/N
    2. มีifftฟังก์ชั่นMATLAB หรือตัวเลือกฟังก์ชั่นที่ไม่ได้ปรับขนาดอัตโนมัติเป็นหรือไม่?1/N

    หรือมีการประชุมที่ดีกว่าที่เราควรใช้ในการวางหรือไม่? ตัวอย่างเช่นการวางในแทนที่หรือวางในสมการทั้งสองแทนที่จะเป็น ?1/N1/Nfftifft1/N1/N

  • ปรับขนาดตามช่วงเวลาการสุ่มตัวอย่าง

    ฉันเคยได้ยินว่าfftและifftฟังก์ชั่นสันนิษฐานว่าระยะเวลาการสุ่มตัวอย่างและสำหรับฟังก์ชั่นที่เป็นจริงต่อไปนี้จะต้องใช้:Tsampling=1/fsampling=1

X[k]=1Tsamplingn=1Nx[n]ej2π(k1)(n1)N,where1kNx[n]=TsamplingNk=1NX[k]e+j2π(k1)(n1)N,where1nN

ดูลิงค์:

  • ลิงก์ 1 (ดูความคิดเห็นต่อ Matt Szelistowski โดย Dr Seis)
  • ลิงก์ 2 (ดูคำตอบโดย Rick Rosson เทียบกับ Dr Seis)
  • ลิงก์ 3 (ดูความคิดเห็นโดย Matt (ข้อความ: 7/16) และแสดงความคิดเห็นโดย Poorya (14/16)
  • ลิงก์ 4 (ดูหน้า 10, เลื่อน [1,1])
  • ลิงค์ 5 (ดูหน้า 8 + 9) [ดูเหมือนว่าเขากำลังใช้การประชุมแบบตรงกันข้ามสำหรับ fft และ ifft]

มันเป็นเรื่องจริงเหรอ?

ฉันป่องๆโดยเฉพาะอย่างยิ่งเพราะฉันไม่สามารถหาสมการ DFT หรือ DTFT บนวิกิพีเดียซึ่งรวมถึงระยะเวลาการสุ่มตัวอย่าง


2
BTW, kando กำลังบอกว่ามันเป็น (กับ MATLAB): startแต่ฉันต้องบอกว่าการประชุมเดินสายของ MATLAB เพื่อให้ DC เข้าสู่ bin # 1 (หรือความกว้างขององค์ประกอบความถี่ลงใน bin ) ไดรฟ์ฉันร่วมเพศ nutz !!!! kk+1
X[k]=n=1Nx[n]ej2π(k1)(n1)N,where1kNx[n]=1Nk=1NX[k]e+j2π(k1)(n1)N,where1nN
kk+1
robert bristow-johnson

คำตอบ:


6

ไม่ว่าจะขยายขนาด FFT ไปข้างหน้า 1 / N หรือไม่ขึ้นอยู่กับผลลัพธ์ที่คุณต้องการสำหรับการวิเคราะห์เพิ่มเติม: พลังงาน (การรักษาเอกลักษณ์ของ Parseval) หรือแอมพลิจูด (การวัดความสูงหรือโวลต์ ฯลฯ )

หากคุณต้องการวัดหรือวิเคราะห์พลังงานอย่าปรับขนาด 1 / N และไซนัสที่ยาวกว่าของแอมพลิจูดที่ยาวกว่าจะสร้างผลลัพธ์ FFT ที่ใหญ่ขึ้นตามสัดส่วนกับพลังงานที่มากขึ้นของสัญญาณที่ยาวขึ้น

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

ดังนั้น. พลังงานหรือแอมพลิจูด คุณต้องการแบบไหน

ทีนี้ถ้าคุณลดขนาด FFT ไปข้างหน้าคุณไม่ควรย่อขนาดอินเวอร์สดังนั้น IFFT (FFT (x)) == x หรือทำในทางกลับกัน

1 / sqrt (N) สำหรับมาตราส่วนดูเหมือนว่าฉันจะเป็นอย่างใดอย่างหนึ่งเมื่อต้องการสมมาตรแบบเป็นทางการสำหรับการพิสูจน์บางอย่างหรือเมื่อสร้างการจัดเรียงของฮาร์ดแวร์ไปป์ไลน์ที่เวลาแฝงและ / หรือจำนวนหน่วย / ประตูเลขคณิตสำหรับ DFT และ สำหรับ IDFT จะต้องเหมือนกัน แต่คุณไม่ได้รับการวัดพลังงานหรือแอมพลิจูดโดยตรงสำหรับการวิเคราะห์ทางวิศวกรรมประเภทใด ๆ


เมื่อคุณพูดว่า "ถ้าคุณต้องการวัดพลังงานก็ไม่ต้องปรับมาตราส่วน " ... ฉันไม่จำเป็นต้องไต่ระดับเพื่อให้การแปลงเป็นเอกสิทธิ์และอนุรักษ์พลังงานหรือไม่? หรือเป็นเพราะฉันต้องยกกำลังสองทั้งสัญญาณเพื่อให้ได้พลังงานที่ให้อย่างมีประสิทธิภาพ? หากเป็นจริง แต่สิ่งที่เป็นคลื่นความถี่ที่ปรับขนาดโดยจริงแสดงให้ฉันแล้ว? 1/N1/N1/N1/N
LCsa

นอกจากนี้เมื่อพูดว่า "ด้วยพลังงานมากกว่าที่แอมพลิจูดเดียวกัน" ... คุณไม่ต้องการแปลว่า "ความถี่" ใช่ไหม
LCsa

7

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

ความคิดเห็น

% fft จะต้องถูกทำให้เป็นมาตรฐานด้วยจำนวนตัวอย่างในข้อมูล
การประชุมนี้ถูกกำหนดโดยนักพัฒนาซอฟต์แวร์ (Mathworks)

มันผิด. ไม่มีใครพูดว่าคุณจะต้องทำให้ผลลัพธ์ของ FFT เป็นปกติ ถ้าคุณต้องการคุณมีอิสระที่จะทำ

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

(1)X(2πkNT)Tn=0N1x(nT)ej2πkn/N,0k<N

โดยที่คือระยะเวลาการสุ่มตัวอย่างคือความยาว DFT,คือสัญญาณต่อเนื่องเวลาและคือการแปลงฟูริเยร์แบบต่อเนื่องตลอดเวลา ทางด้านขวาของเป็นเพียงตัวอย่างDFT ของ , ปรับขนาดด้วยโดยที่เราสมมติว่าส่วนที่เกี่ยวข้องของอยู่ในช่วง . รายละเอียดเพิ่มเติมเกี่ยวกับการใช้ DFT สำหรับการประมาณการแปลงฟูริเยร์ต่อเนื่องสามารถพบได้ในคำตอบนี้TNx(t)X(ω)(1)Nx(t)Tx(t)t[0,NT]


2
downvote คืออะไร โปรดแสดงความคิดเห็น.
Matt L.

1
ฉันมักจะลงคะแนนด้วยบัตรลงคะแนนลับ แต่ฉันจะยกเว้นในครั้งนี้ ขึ้นอยู่กับสิ่งที่คนทำกับ DFT มีการประชุมที่"ดีกว่า"แน่นอนกว่าคนอื่น (แต่ไม่มีการประชุมใดจะดีไปกว่าเหตุการณ์อื่น ๆ ในทุกสถานการณ์)
robert bristow-johnson

5

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

นอกจากนี้ฉันไม่ได้จำกัดหรือพวกเขาสามารถเป็นจำนวนเต็มใด ๆ เพราะฉันสวยมากเกี่ยวกับความหมายพื้นฐานของการแปลงฟูริเยร์แบบไม่ต่อเนื่อง: DFT และอนุกรมฟูเรียร์โดยสิ้นเชิง และเหมือนกัน DFT แมปลำดับเป็นระยะกับจุดไปยังลำดับตามลำดับอีกครั้งด้วยคาบและ iDFT จับคู่กลับมา0n<N0k<Nx[n]NX[k]N

ดังนั้น

x[n+N]=x[n] nZ
X[k+N]=X[k] kZ

เช่นกันการวนเวียนใน"โดเมนเวลา" ( ) หรือ"ความถี่โดเมน" ( ) ถูกกำหนดให้สอดคล้องกับการประชุมทั้งหมด:X [ k ]x[n]X[k]

h[n]x[n]i=0N1h[i]x[ni]=i=0N1x[i]h[ni]
W[k]X[k]i=0N1W[i]X[ki]=i=0N1X[i]W[ki]

ดังนั้นข้อได้เปรียบเพียงข้อเดียวของอีกข้อตกลงหนึ่ง (สมมติว่าอนุสัญญาทั้งสองฉบับใช้ได้) สามารถเกี่ยวกับความเรียบง่ายของการแสดงออกของบางส่วนของทฤษฎีบท


การปรับขนาดทั่วไปสำหรับ DFT:

DFT{x[n]}X[k]n=0N1x[n]ej2πkn/NiDFT{X[k]}x[n]=1Nk=0N1X[k]e+j2πkn/N

มีข้อได้เปรียบของความเรียบง่ายเกี่ยวกับการวนแบบวงกลมใน"โดเมนเวลา"

DFT{h[n]x[n]}=H[k]X[k]

แต่มีปัจจัยการปรับขนาดที่คุณต้องกังวลหากคุณเชื่อมั่นใน"โดเมนความถี่" :

iDFT{W[k]X[k]}=1Nw[n]x[n]

ทฤษฎีบทของ Parseval ก็มีส่วนที่ต้องกังวลเช่นกัน

n=0N1|x[n]|2=1Nk=0N1|X[k]|2

และทฤษฎี Duality:

DFT{X[n]}=Nx[k]
iDFT{x[k]}=1NX[n]

การประชุมการปรับขนาดทั่วไปอื่น ๆ สำหรับ DFT:

iDFT{X[k]}x[n]k=0N1X[k]e+j2πkn/NDFT{x[n]}X[k]=1Nn=0N1x[n]ej2πkn/N

มีความได้เปรียบของการอยู่ใกล้นิดหน่อย conceptually ชุดฟูริเยร์เป็นฟังก์ชันพื้นฐานของฟูริเยร์และคือค่าสัมประสิทธิ์ฟูริเยร์ ดังนั้นหากคุณกำลังมองหาข้อมูลโดเมนเวลาดิบและดู sinusoid กับรอบในกันชนของตัวอย่างและมี (ศูนย์การ peak) กว้างที่จะหมายความว่า{2} X [ k ]ejωknej(2πk/N)nX[k]x[n]kNA|X[k]|=|X[k]|=|X[Nk]|=A2

นอกจากนี้ยังมีความเรียบง่ายมากขึ้นเกี่ยวกับการวนแบบวงกลมในโดเมนความถี่

iDFT{W[k]X[k]}=w[n]x[n]

แต่มีปัจจัยการปรับขนาดที่คุณต้องกังวลหากคุณเชื่อมั่นในโดเมนเวลา :

DFT{h[n]x[n]}=1NH[k]X[k]

ทฤษฎีบทของ Parseval ก็มีส่วนที่ต้องกังวลเช่นกัน

1Nn=0N1|x[n]|2=k=0N1|X[k]|2

และทฤษฎี Duality:

DFT{X[n]}=1Nx[k]
iDFT{x[k]}=NX[n]

ข้อตกลงการปรับสเกลรวมสำหรับ DFT นั้นเหมือนกันในการสเกลด้วยการผกผันและรักษาพลังงานข้ามการแปลงหรือการแปลงผกผัน:

DFT{x[n]}X[k]1Nn=0N1x[n]ej2πkn/NiDFT{X[k]}x[n]=1Nk=0N1X[k]e+j2πkn/N

การแปลงในโดเมนเวลาหรือโดเมนความถี่มีปัจจัยการปรับมาตราส่วนเดียวกันที่ต้องกังวลเกี่ยวกับ:

DFT{h[n]x[n]}=1NH[k]X[k]

iDFT{W[k]X[k]}=1Nw[n]x[n]

แต่ทฤษฎีบทของ Parseval ไม่มีปัจจัยการปรับขนาดที่ต้องกังวล

n=0N1|x[n]|2=k=0N1|X[k]|2

ทฤษฎีบท Duality และ:

i D F T { x [ k ] } = X [ - n ]

DFT{X[n]}=x[k]
iDFT{x[k]}=X[n]


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

มันไม่ใช่เรื่อง "ไม่ใช่ปัญหา" เมื่อใน MATLAB คุณใช้max(abs(X))ฟังก์ชั่นเพื่อค้นหาจุดสูงสุดของสเปกตรัมและคุณลืมที่จะลบออก1จากดัชนีที่ส่งคืนและคุณจะต้องคำนวณทางคณิตศาสตร์ มันเป็นปัญหา และสิ่งที่น่าเศร้าก็คือ ต้นกำเนิดการจัดทำดัชนีนั้นเกี่ยวข้องกับ " นิยามของ DFT" มากพอ ๆ กับการปรับสเกล มันเกี่ยวกับสิ่งที่ต้องทำบัญชีหรือไม่
robert bristow-johnson

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