FFT ทำอะไรใน MATLAB

Fft Tha Xari Ni Matlab



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

บทความนี้จะสอนเราเกี่ยวกับการทำงานของ เอฟ.เอฟ.ที ใน MATLAB

ทำความเข้าใจ FFT

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







เดอะ เอฟ.เอฟ.ที อัลกอริทึมทำคณิตศาสตร์ที่ซับซ้อนมากมายกับข้อมูลสัญญาณ รับสัญญาณและแยกออกเป็นส่วนย่อยๆ จากนั้นจึงคำนวณความถี่และความแรงของสัญญาณสำหรับแต่ละส่วน สุดท้าย จะรวมผลลัพธ์ทั้งหมดเพื่อให้ภาพของเนื้อหาความถี่ของสัญญาณ ความสัมพันธ์ของเฟส และลักษณะสำคัญอื่นๆ



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



วิธีใช้ FFT ใน MATLAB

MATLAB มีฟังก์ชันในตัวที่เรียกว่า เอฟ.เอฟ ที่ทำให้เราได้แสดง การแปลงฟูเรียร์แบบเร็ว (FFT) การคำนวณสัญญาณ ฟังก์ชันนี้ใช้งานง่ายและมีตัวเลือกมากมายสำหรับการวิเคราะห์และจัดการสัญญาณในโดเมนความถี่:





ไวยากรณ์สำหรับการใช้ เอฟ.เอฟ.ที ฟังก์ชั่นใน MATLAB มีดังต่อไปนี้:

ฉ = เอฟ.เอฟ ( x )

ฉ = เอฟ.เอฟ ( x,น )

ฉ = เอฟ.เอฟ ( x,n,สลัว )

ที่นี่:



F= เอฟเอฟ(x) ให้ผลการคำนวณของ การแปลงฟูเรียร์แบบไม่ต่อเนื่อง (DFT) ของ x โดยใช้ การแปลงฟูเรียร์แบบเร็ว (FFT) อัลกอริทึม

  • ถ้า x แทนเวกเตอร์ เอฟเอฟที(x) ให้ผลการแปลงฟูเรียร์ของเวกเตอร์
  • ถ้า x แทนเมทริกซ์ เอฟเอฟที(x) ให้การแปลงฟูริเยร์ของแต่ละคอลัมน์โดยถือว่าแต่ละคอลัมน์เป็นเวกเตอร์

F = fft(x,n) ให้ผล DFT n จุด F มีขนาดเท่ากับ x เมื่อไม่ได้ระบุค่าไว้

  • ถ้า x เป็นเวกเตอร์และความยาวน้อยกว่า n x จะถูกเติมโดยมีเลขศูนย์ต่อท้ายจนกว่าจะถึง n
  • ถ้า x เป็นเวกเตอร์และมีความยาวเกิน n จะถูกตัดให้เหลือความยาวเท่ากับ n
  • ถ้า x เป็นเมทริกซ์ แต่ละคอลัมน์จะถูกพิจารณาว่าเป็นเวกเตอร์

F = fft(x,n,สลัว) ให้ผลการแปลงฟูริเยร์ตามมิติที่กำหนด สมมติว่า เอฟที(x, n, 2) ให้การแปลงฟูริเยร์ n จุดสำหรับทุกแถวถ้า x แทนเมทริกซ์

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการทำงานของ เอฟ.เอฟ.ที ฟังก์ชั่นใน MATLAB

ตัวอย่างที่ 1

เราสามารถใช้ เอฟ.เอฟ.ที ใน MATLAB เพื่อสาธิตการสร้างและวิเคราะห์สัญญาณที่มีองค์ประกอบความถี่เฉพาะและสัญญาณรบกวนแบบสุ่ม

ตัวอย่างเช่น:

= 2543 ;

เอฟเอส = 1500 ;

ท = 1 /fs;

ทีวี = ( 0 :ls- 1 ) *ท;

ฉ = 0.6 * ปราศจาก ( 2 * ปี่ * ห้าสิบ *โทรทัศน์ ) + 3 * แรนดอม ( ขนาด ( โทรทัศน์ ) ) + ปราศจาก ( 2 * ปี่ * 120 *โทรทัศน์ ) ;

พล็อต ( 1,000 *โทรทัศน์ ( 1 : ห้าสิบ ) ,ฉ ( 1 : ห้าสิบ ) )

xlabel ( 'ทีวี (มิลลิวินาที)' )

ฉลาก ( 'ฉ(ทีวี)' )

ชื่อ ( ' สัญญาณเสียหายที่มีสัญญาณรบกวนแบบสุ่มเป็นศูนย์' )

ฉ = เอฟ.เอฟ ( ) ;

PS2 = เอบีเอส ( F/ ) ;

PS1 = PS2 ( 1 : / 2 + 1 ) ;

ป.ล.1 ( 2 :จบ- 1 ) = 2 *ปล.1 ( 2 :จบ- 1 ) ;

ฉ = ฉ* ( 0 : ( / 2 ) ) / ;

พล็อต ( ฉ, PS1 )

ชื่อ ( 'แอมพลิจูดสเปกตรัม (ด้านเดียว) PS1 สำหรับ f(t)' )

xlabel ( 'ฉ(เฮิรตซ์)' )

ฉลาก ( '|PS1(ฉ)|' )

รหัสที่ให้มาสร้างสัญญาณที่มีความยาว 2,000 ตัวอย่าง (ลิตร) ความถี่ในการสุ่มตัวอย่าง 1500 เฮิร์ต (fs) และ ก ระยะเวลาสุ่มตัวอย่าง (ts) . เดอะ เวกเตอร์เวลา (ทีวี) ถูกสร้างขึ้นตามพารามิเตอร์เหล่านี้ สัญญาณ ประกอบด้วยการรวมกันของส่วนประกอบไซน์ที่ 50 Hz และ 120 Hz พร้อมด้วยสัญญาณรบกวนแบบสุ่มที่มีค่าเฉลี่ยเป็นศูนย์ จากนั้นจึงลงจุดด้วยกลุ่มตัวอย่าง 50 ตัวอย่างแรก รหัสจะคำนวณเพิ่มเติมว่า เอฟ.เอฟ.ที ของสัญญาณและคำนวณหา สเปกตรัมแอมพลิจูด (PS1) . ในที่สุด สเปกตรัมแอมพลิจูดจะถูกพล็อตเทียบกับความถี่ที่สอดคล้องกัน (f) ในหน่วย Hz

ตัวอย่างที่ 2

นี่เป็นอีกตัวอย่างหนึ่งที่ใช้ เอฟ.เอฟ.ที ฟังก์ชันใน MATLAB สำหรับการแปลงพัลส์เกาส์เซียนผ่านโดเมนเวลาเป็นโดเมนความถี่

เอฟเอส = 500 ;

ท = - 0.5 : 1 /fs: 0.5 ;

= ความยาว ( ) ;

ฉ = 1 / ( 4 * ตร.ว ( 2 * ปี่ * 0.02 ) ) * ( ประสบการณ์ ( -ts.^ 2 / ( 2 * 0.02 ) ) ) ;

พล็อต ( ts,ฉ )

xlabel ( 'เวลา (เ)' )

ฉลาก ( 'ฉ(เ)' )

ชื่อ ( 'โดเมนเวลา' )

เช่น = 2 ^nextpow2 ( ) ;

ฉ = ฉ* ( 0 : ( เช่น/ 2 ) ) /เช่น;

ฉ = เอฟ.เอฟ ( ฉ,np ) ;

พีเอฟ = เอบีเอส ( F/np ) ;

พล็อต ( ฉ,พีเอฟ ( 1 :เช่น/ 2 + 1 ) )

xlabel ( '(ฉ)' )

ฉลาก ( '|PF(ฉ)|' )

ชื่อ ( 'โดเมนความถี่' )

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

ตัวอย่างที่ 3

ตัวอย่างต่อไปนี้สร้างสัญญาณไซน์สามสัญญาณที่มีความถี่ต่างกัน และแปลงสัญญาณในโดเมนเวลาโดยใช้ เอฟ.เอฟ.ที ฟังก์ชั่นใน MATLAB

เอฟเอส = 2500 ;

ท = 1 /fs;

= 3000 ;

เสื้อ = ( 0 :ls- 1 ) *ท;

r1 = ปราศจาก ( 3 * ปี่ * 60 * เสื้อ ) ;

r2 = ปราศจาก ( 3 * ปี่ * 140 * เสื้อ ) ;

r3 = ปราศจาก ( 3 * ปี่ * 350 * เสื้อ ) ;

ฉ = [ r1; r2; r3 ] ;

สำหรับ k = 1 : 3

แผนย่อย ( 3 , 1 ,เค )

พล็อต ( ที ( 1 : 250 ) ,ฉ ( เค 1 : 250 ) )

ชื่อ ( [ 'หมายเลขแถว' , num2str ( เค ) , ' (โดเมนเวลา)' ] )

จบ

เช่น = 2 ^nextpow2 ( ) ;

ง = 2 ;

ฉ = เอฟ.เอฟ ( ฉ,เอ็นพี,ง ) ;

PS2 = หน้าท้อง ( F/ ) ;

PS1 = PS2 ( :, 1 :เช่น/ 2 + 1 ) ;

ป.ล.1 ( :, 2 :จบ- 1 ) = 2 *ปล.1 ( :, 2 :จบ- 1 ) ;

สำหรับ k= 1 : 3

แผนย่อย ( 3 , 1 ,เค )

พล็อต ( 0 : ( fs/np ) : ( ฉ/ 2 -fs/np ) ,PS1 ( เค 1 :เช่น/ 2 ) )

ชื่อ ( [ 'หมายเลขแถว' , num2str ( เค ) , '(โดเมนความถี่)' ] )

จบ

ในโค้ดด้านบน คลื่นไซน์สามคลื่น r1, r2 และ r3 จะแสดงในหน้าต่างเอาต์พุตในโดเมนเวลา สัญญาณโดเมนความถี่ “PS1” ถูกสร้างขึ้นโดยใช้ฟังก์ชัน FFT กับคลื่นเพื่อคำนวณสเปกตรัมแอมพลิจูดด้านเดียวแต่ละรายการ

บทสรุป


เดอะ เอฟ.เอฟ.ที เป็นเครื่องมืออันมีค่าที่ช่วยให้เราเข้าใจสัญญาณที่แตกต่างกันโดยการวิเคราะห์เนื้อหาความถี่ของสัญญาณ ด้วยฟังก์ชันในตัวของ MATLAB, fft, ประสิทธิภาพ เอฟ.เอฟ.ที การคำนวณสัญญาณจะสะดวกขึ้น ฟังก์ชันนี้ช่วยให้เราสามารถเรียนรู้รายละเอียดที่สำคัญเกี่ยวกับความถี่ต่างๆ และความเข้มสัมพัทธ์ของความถี่เหล่านั้นโดยการแปลงข้อมูลจากโดเมนเวลาเป็นโดเมนความถี่ คำแนะนำข้างต้นมีความสำคัญต่อการทำความเข้าใจคุณลักษณะของสัญญาณอย่างลึกซึ้งยิ่งขึ้น และทำการตัดสินใจอย่างชาญฉลาดในการใช้งานต่างๆ