Τι κάνει το FFT στο MATLAB;

Ti Kanei To Fft Sto Matlab



ο Γρήγορος μετασχηματισμός Fourier (FFT) αναφέρεται σε μια εξαιρετικά βελτιστοποιημένη έκδοση του Διακριτός μετασχηματισμός Fourier (DFT) που μετατρέπει διακριτά σήματα μέσω του πεδίου χρόνου στον τομέα συχνότητας. Το περιεχόμενο συχνότητας, η φάση και άλλες πτυχές του σήματος μπορούν να παρατηρηθούν μέσω FFT υπολογισμούς.

Αυτό το άρθρο πρόκειται να μας διδάξει για τη λειτουργία του FFT στο MATLAB.

Κατανόηση του FFT

ο Γρήγορος μετασχηματισμός Fourier (FFT) αντιπροσωπεύει ειδική τεχνική που μας βοηθά να κατανοούμε διαφορετικά τα σήματα. Κανονικά, τα σήματα εμφανίζονται ως ακολουθίες αριθμών που αλλάζουν με την πάροδο του χρόνου, αλλά με FFT, μπορούμε να δούμε ποιες διαφορετικές συχνότητες υπάρχουν στο σήμα και πόσο ισχυρές είναι. Είναι σαν να σπάζεις ένα σήμα στις μουσικές του νότες και να βλέπεις πόσο δυνατή είναι κάθε νότα.







ο FFT Ο αλγόριθμος κάνει πολλά σύνθετα μαθηματικά στα δεδομένα σήματος. Λαμβάνει το σήμα και το χωρίζει σε μικρότερα μέρη και στη συνέχεια υπολογίζει τις συχνότητες και τις δυνάμεις τους για κάθε εξάρτημα. Τέλος, συνδυάζει όλα τα αποτελέσματα για να μας δώσει μια εικόνα του περιεχομένου συχνότητας του σήματος, των σχέσεων φάσης και άλλων σημαντικών χαρακτηριστικών.



Αυτή η τεχνική χρησιμοποιείται σε πολλά πεδία γιατί μας βοηθά να αναλύουμε και να κατανοούμε καλύτερα τα σήματα. Για παράδειγμα, σε επεξεργασία σήματος , μπορούμε να χρησιμοποιήσουμε FFT για να φιλτράρετε τον ανεπιθύμητο θόρυβο ή να εντοπίσετε συγκεκριμένα μοτίβα. Σε ανάλυση ήχου , μπορούμε να αναγνωρίσουμε διαφορετικούς ήχους ή να αναλύσουμε την ποιότητα μιας ηχογράφησης. Σε ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ , FFT μπορεί να μας βοηθήσει να αναλύσουμε τις χωρικές συχνότητες στην εικόνα. Και στις τηλεπικοινωνίες, FFT χρησιμοποιείται για την αποτελεσματική μετάδοση και λήψη σημάτων.



Πώς να χρησιμοποιήσετε το FFT στο MATLAB

Το MATLAB παρέχει μια ενσωματωμένη συνάρτηση που ονομάζεται fft που μας επιτρέπει να αποδίδουμε Γρήγορος μετασχηματισμός Fourier (FFT) υπολογισμούς σε σήματα. Αυτή η λειτουργία είναι εύκολη στη χρήση και προσφέρει διάφορες επιλογές για την ανάλυση και το χειρισμό σημάτων στον τομέα συχνοτήτων:





Η σύνταξη για τη χρήση του FFT Οι λειτουργίες στο MATLAB δίνονται παρακάτω:

F = fft ( Χ )

F = fft ( x,n )

F = fft ( x, n, dim )

Εδώ:



F= fft(x) αποδίδει τον υπολογισμό του Διακριτός μετασχηματισμός Fourier (DFT) του x χρησιμοποιώντας το Γρήγορος μετασχηματισμός Fourier (FFT) algorithm.

  • Αν το x αντιπροσωπεύει ένα διάνυσμα, fft(x) αποδίδει τον μετασχηματισμό Fourier του διανύσματος.
  • Αν το x αντιπροσωπεύει έναν πίνακα, fft(x) παρέχει τον μετασχηματισμό Fourier κάθε στήλης αντιμετωπίζοντας κάθε στήλη ως διάνυσμα.

F = fft(x,n) αποδίδει DFT σημείου n. Το F έχει το ίδιο μέγεθος με το x όταν δεν παρέχεται τιμή.

  • Αν το x είναι διάνυσμα και το μήκος του είναι μικρότερο από n, το x συμπληρώνεται με μηδενικά μέχρι να φτάσει στο n.
  • Αν το x είναι διάνυσμα και το μήκος του υπερβαίνει το n, περικόπτεται σε αυτό το μήκος n.
  • Εάν το x είναι ένας πίνακας, κάθε στήλη θεωρείται ως περίπτωση διανύσματος.

F = fft(x,n, dim) αποδίδει Μετασχηματισμό Fourier κατά μήκος της δεδομένης διάστασης dim. Ας πούμε, fft(x, n, 2) δίνει το μετασχηματισμό Fourier n-σημείου για κάθε σειρά αν το x αντιπροσωπεύει έναν πίνακα.

Τα ακόλουθα παραδείγματα επεξηγούν τη λειτουργία του FFT λειτουργία στο MATLAB.

Παράδειγμα 1

Μπορούμε να χρησιμοποιήσουμε FFT στο MATLAB για την επίδειξη της παραγωγής και ανάλυσης ενός σήματος με συγκεκριμένα στοιχεία συχνότητας και τυχαίο θόρυβο.

Για παράδειγμα:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

τηλεόραση = ( 0 :ls- 1 ) *ts;

f = 0,6 * χωρίς ( 2 * πι * πενήντα *τηλεόραση ) + 3 * randn ( Μέγεθος ( τηλεόραση ) ) + χωρίς ( 2 * πι * 120 *τηλεόραση ) ;

οικόπεδο ( 1000 *τηλεόραση ( 1 : πενήντα ) ,φά ( 1 : πενήντα ) )

xlabel ( 'tv (ms)' )

ylabel ( 'f(tv)' )

τίτλος ( 'Κατεστραμμένο σήμα με μηδενικό μέσο τυχαίο θόρυβο' )

F = fft ( φά ) ;

ΥΓ2 = κοιλιακούς ( ΦΑ/ ls ) ;

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

ΥΓ1 ( 2 :τέλος- 1 ) = 2 *ΥΓ1 ( 2 :τέλος- 1 ) ;

f = fs* ( 0 : ( ls / 2 ) ) / ls ;

οικόπεδο ( f, PS1 )

τίτλος ( 'Φάσμα πλάτους (Μονής όψης) PS1 για f(t)' )

xlabel ( 'f(Hz)' )

ylabel ( '|PS1(f)|' )

Ο παρεχόμενος κωδικός παράγει ένα σήμα με μήκος 2000 δείγματα (ls) , μια συχνότητα δειγματοληψίας του 1500 Hz (fs) , και ένα περίοδος δειγματοληψίας (ts) . ο διάνυσμα χρόνου (τηλεόραση) δημιουργείται με βάση αυτές τις παραμέτρους. Το σήμα φά αποτελείται από έναν συνδυασμό ημιτονοειδών στοιχείων στα 50 Hz και 120 Hz, μαζί με μηδενικό μέσο τυχαίο θόρυβο. Στη συνέχεια σχεδιάζεται με ένα τμήμα των πρώτων 50 δειγμάτων. Ο κώδικας υπολογίζει περαιτέρω το FFT του σήματος και υπολογίζει το φάσμα πλάτους (PS1) . Τέλος, το φάσμα πλάτους σχεδιάζεται με τις αντίστοιχες συχνότητες (f) σε Hz.

Παράδειγμα 2

Εδώ είναι ένα άλλο παράδειγμα που χρησιμοποιεί το FFT συνάρτηση στο MATLAB για τον μετασχηματισμό του παλμού Gauss μέσω του πεδίου χρόνου στον τομέα συχνότητας.

fs = 500 ;

ts = - 0,5 : 1 /fs: 0,5 ;

ls = μήκος ( ts ) ;

f = 1 / ( 4 * sqrt ( 2 * πι * 0,02 ) ) * ( exp ( -τσ.^ 2 / ( 2 * 0,02 ) ) ) ;

οικόπεδο ( ts,f )

xlabel ( 'Ώρα (t)' )

ylabel ( 'f(t)' )

τίτλος ( 'Time Domain' )

πχ = 2 ^ nextpow2 ( ls ) ;

f = fs* ( 0 : ( π.χ/ 2 ) ) /π.χ;

F = fft ( f,np ) ;

PF = κοιλιακούς ( F/np ) ;

οικόπεδο ( f,PF ( 1 :π.χ/ 2 + 1 ) )

xlabel ( '(φά)' )

ylabel ( '|PF(f)|' )

τίτλος ( 'Τομέας συχνότητας' )

Ο παρεχόμενος κώδικας δημιουργεί ένα σήμα Gaussian παλμού στο πεδίο του χρόνου και αναλύει το περιεχόμενο συχνότητάς του χρησιμοποιώντας το Γρήγορος μετασχηματισμός Fourier (FFT) στο MATLAB. Το σήμα του τομέα χρόνου σχεδιάζεται και στη συνέχεια το FFT εκτελείται για να ληφθεί η αναπαράσταση του τομέα συχνότητας. Το αποτέλεσμα φάσμα πλάτους σχεδιάζεται με τις αντίστοιχες συχνότητες.

Παράδειγμα 3

Το ακόλουθο παράδειγμα δημιουργεί τρία ημιτονοειδή σήματα με διαφορετικές συχνότητες και τα σχεδιάζει στο πεδίο του χρόνου χρησιμοποιώντας το FFT λειτουργία στο MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

t = ( 0 :ls- 1 ) *ts;

r1 = χωρίς ( 3 * πι * 60 *t ) ;

r2 = χωρίς ( 3 * πι * 140 *t ) ;

r3 = χωρίς ( 3 * πι * 350 *t ) ;

f = [ r1; r2; r3 ] ;

Για k = 1 : 3

υποπλοκή ( 3 , 1 )

οικόπεδο ( t ( 1 : 250 ) ,φά ( κ, 1 : 250 ) )

τίτλος ( [ 'Αριθ. σειράς' , num2str ( κ ) , '(Time Domain)' ] )

τέλος

πχ = 2 ^ nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

ΥΓ2 = κοιλιακούς ( ΦΑ/ ls ) ;

PS1 = PS2 ( :, 1 :π.χ/ 2 + 1 ) ;

ΥΓ1 ( :, 2 :τέλος- 1 ) = 2 *ΥΓ1 ( :, 2 :τέλος- 1 ) ;

Για k= 1 : 3

υποπλοκή ( 3 , 1 )

οικόπεδο ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) , PS1 ( κ, 1 :π.χ/ 2 ) )

τίτλος ( [ 'Αριθ. σειράς' , num2str ( κ ) , '(Τομέας συχνότητας)' ] )

τέλος

Στον παραπάνω κώδικα, τρία ημιτονοειδή κύματα, τα r1, r2 και r3 εμφανίζονται στο παράθυρο εξόδου στον τομέα χρόνου. Το σήμα πεδίου συχνότητας 'PS1' δημιουργείται χρησιμοποιώντας τη συνάρτηση FFT στα κύματα για τον υπολογισμό καθενός από τα μεμονωμένα φάσματα πλάτους μονής πλευράς τους.

συμπέρασμα


ο FFT είναι ένα πολύτιμο εργαλείο που μας βοηθά να κατανοούμε διαφορετικά τα σήματα αναλύοντας το περιεχόμενο συχνότητάς τους. Με την ενσωματωμένη λειτουργία του MATLAB, fft, απόδοση FFT οι υπολογισμοί στα σήματα γίνονται βολικοί. Αυτή η συνάρτηση μας δίνει τη δυνατότητα να μάθουμε κρίσιμες λεπτομέρειες σχετικά με τις διαφορετικές συχνότητες και τις σχετικές εντάσεις αυτών των συχνοτήτων μετατρέποντας δεδομένα από τον τομέα χρόνου στον τομέα συχνότητας. Ο παραπάνω οδηγός είναι ζωτικής σημασίας για την απόκτηση βαθύτερης κατανόησης των χαρακτηριστικών του σήματος και τη λήψη τεκμηριωμένων αποφάσεων σε διαφορετικές εφαρμογές.