Προς το περιεχόμενο

Μετασχηματισμός Fourier με MATLAB


luke135

Προτεινόμενες αναρτήσεις

Γεια σε όλους

έχω δημιουργήσει έναν τετραγωνικό παλμό στο διάστημα (-29.5, 29.5) και με πλάτος 7 και θέλω να κάνω την γραφική παράσταση του μετασχηματισμού Fourier με το MATLAB. Όταν το κάνω plot εμφανίζεται σαν ορθή γωνία και μόνο όταν κάνω ζουμ φαίνεται ο μετασχηματισμός. Είναι λάθος αυτό; Υπάρχει κάποιος τρόπος να το εμφανίσω πιο ωραία;

Ο κώδικας που έγραψα είναι αυτός:

 

To = 59;
A = 7;
 
t=-33:0.001:33;
 
x = A*rectpuls(t, To);

X=fft (x);
 
plot (t, abs(X));

image.png.7f63c6dda64695e6f1546a6247e37f6a.png 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δοκίμασε με stem

Επίσης, δεν χρειάζεσαι το “reflection” του FT. Από την Fs/2 και πάνω, έχει επανάληψη του συχνοτικού περιεχομένου. Δεν θυμάμαι εάν η fft του MATLAB επιστρέφει τις χρήσιμες συχνοτικές περιοχές ή την πλήρη έξοδο του FT. Δες με `help fft`  

Τέλος, δεν έχεις χρόνο στο άξονα x στο διάγραμμα του FT. Οπότε, έχεις λάθος όρισμα για τον άξονα x. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Όταν κάνεις DFT ή FFT πρέπει πάντα να έχεις υπόψη σου τρία πράγματα. Πάντα.

1.
Το χρονικό διάστημα Τ της δειγματοληψίας του σήματος καθορίζει το
ελάχιστο βήμα Δf για τη διακριτοποίηση της συχνότητας (frequency resolution) :  
   Δf ≥ (Δf)min = 1/T.

2.
Το βήμα Δt της χρονικής διακριτοποίησης καθορίζει τη μέγιστη συχνότητα που μπορεί να ληφθεί :  
   f ≤ fmax = 1/(2Δt).

Ή αλλιώς, Δt ≥ 1/(2fmax)   (Nyquist sampling criterion).
Aυτό είναι το ελάχιστο Δt ώστε η μέγιστη συχνότητα να είναι fmax.
Μικρότερο Δt μπορεί να "πιάσει" συχνότητες μεγαλύτερες από fmax.

3. 
Tο φάσμα μπορεί να χρειάζεται παραθύρωση.

Χωρίς να λάβεις υπόψη αυτά, τι σόι FFT πας να κάνεις;  έχεις καταλάβει τι είναι αυτό που δίνει ο FFT;

-

Επεξ/σία από V.I.Smirnov
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν είναι θέμα strech.

Για να κάνεις strech vertically y=c·f(x) c>1 για να κάνεις  strech horizontally y=f(c·x) 0<c<1

λογικά δηλαδή το plot(t, 100·abs(x/100)) θα κάνει zoom horizontally and vertically x100

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 23/5/2022 στις 3:55 ΜΜ, luke135 είπε

Γεια σε όλους

έχω δημιουργήσει έναν τετραγωνικό παλμό στο διάστημα (-29.5, 29.5) και με πλάτος 7 και θέλω να κάνω την γραφική παράσταση του μετασχηματισμού Fourier με το MATLAB. Όταν το κάνω plot εμφανίζεται σαν ορθή γωνία και μόνο όταν κάνω ζουμ φαίνεται ο μετασχηματισμός. Είναι λάθος αυτό; Υπάρχει κάποιος τρόπος να το εμφανίσω πιο ωραία;

Ο κώδικας που έγραψα είναι αυτός:

 

To = 59;
A = 7;
 
t=-33:0.001:33;
 
x = A*rectpuls(t, To);

X=fft (x);
 
plot (t, abs(X));

image.png.7f63c6dda64695e6f1546a6247e37f6a.png 

Πρεπει να ορισεις το frequency domain

Fs = 1/0.001 = 1kHz

Sample length

L = 67e3

Μετα το διπλο φασμα ειναι

P2=abs(Fft(x) / L) (Το οτι δεν διαιρεις με L εξηγει τις πολυ υψηλες τιμες στο αξονα Υ) 

Το διπλωνεις στα θετικα:

P1 = P2(1:L/2+1);

P1(2:end-1) = 2*P1(2:end-1);

και οριζεις το πεδίο συχνοτήτων 

f = Fs*(0:(L/2))/L;

plot(f,P1)  

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...