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