WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT

 

derbigmac
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2014, 12:58     Titel: FFT
  Antworten mit Zitat      
Hallo,

ich habe ein Signal (z.B. eine Sinusschwingung 512 Hz) in der Zeitdomäne und möchte es nun in der Frequenzdomäne plotten mit der Absicht eine Spektralanalyse zu machen.
Zu erwarten ist ein einziger Peak bei 512 Hz.

Was ich aber mit der fft erhalte sind immer 2 Peaks. Sind das der Imaginär- und Realteil? Falls ja, wie kann ich den Imaginärteil weglassen? real(fft(signal)) hat nichts gebracht.

Code:

function spektrum(signal)
Nfft = 1000; %Anzahl Abtastwerte für die FFT
N = length(signal);
f = 0:(Nfft/N):Nfft-(Nfft/N);
z = fftshift(fft(signal));

plot(f,2*abs(z)/length(f)); %use abs to get only real parts of complex number
title('Frequenzspektrum');
set(gca,'YTick',[0, 0.5, 1]);
ylabel('Amplitude');
xlabel('Frequenz (Hz)');
end
 


Außerdem verstehe ich nicht, was fftshift und Nfft machen. Ich habe in Foren gelesen, dass man das braucht und habe es deshalb eingebaut. Ohne zu verstehen wie, scheint es ja auch ganz gut zu funktionieren.
Ich dachte erst, dass mir NFFT das Ende der x_achse liefert. Trial and Error zeigte mir, dass diese Vermutung falsch ist.
Ich versuche es jetzt schon seit 2 Tagen, durchforste sämtliche Foren und bin ziemlich frustriert, weil ich einfach nicht verstehe, was hier passiert.

Auch verstehe ich nicht, ob es einen Unterschied zwischen 'Magnitude' als y-Achse und 'Amplitude' als y-Achse gibt.

Weiß jemand einen Rat?

Viele Grüße
derBigMac
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 25.09.2014, 13:25     Titel:
  Antworten mit Zitat      
Die fft Funktion erzeugt ein zweiseitiges Frequenzspektrum

Code:

Fs = % Abtastfrequenz in Hz
N = % Anzahl Messwerte, am besten eine 2er Potenz
df = Fs/N; % Auflösung des Frequenzspektrums
y = % Signal im Zeitbereich
Y = fft(y,N);
% Y hat auch die Länge N
 


Damit geht dein Signal von -Fs/2 [Hz]...0...+Fs/2 [Hz]
Der Vektor V ist aber so angeordnet: 0...+Fs/2, -df...-Fs/2 [Hz]

Mit

Code:


wird der Ouput Y automatisch schon auf die Form -Fs/2 [Hz]...0...+Fs/2 [Hz] gebracht. I.d.R. schaut man sich aber nur den positiven Frequenzbereich an, weshalb Y(1:N/2+1) verwendet wird und man sich den fftshift Befehl sparen kann.

Mehr zu dem Thema...auch die richtige Skalierung (ist bei dir nicht korrekt for f(0 Hz) und f(Fs/2)) empfehle ich folgendes Skript: http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html

Im Forums-Bereich Signalverarbeitung, wo dieses Thema eigentlich hingehört, wurde diese Frage schon das ein oder andere mal beantwortet Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.