Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Ingenieure (m/w) Funktionsentwicklung für Automatisiertes Fahren
Entwicklung von Software Funktionskomponenten für assistierte und automatisierte Fahrfunktionen
Continental AG - Frankfurt

Testingenieur (w/m) Qualitätssicherung ModelDesk
Erstellung von automatisierten und interaktiven Tests
dSPACE GmbH - Paderborn

Systemingenieur (m/w) Funktionsentwicklung Automotive
Konzeption und Spezifikation von spezifischen Funktionen (Mess- und Regelalgorithmen) in elektronischen Steuergeräten
DRÄXLMAIER Group - Vilsbiburg bei Landshut

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT Problem Skalierung der Achsen stimmt nicht

 

Alfred001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2016, 12:25     Titel: FFT Problem Skalierung der Achsen stimmt nicht
  Antworten mit Zitat      
Hallo zusammen,

dank dieses Forums konnte ich mir als Laie viele Infos zur FFT-Analyse mit Matlab einholen.

Leider habe ich dennoch ein Problem mit der Skalierung von Achsen. Dazu habe ich mir schon einige Beiträge durchgelesen, aber ich komme aktuell einfach nicht weiter und hoffe, dass mir jemand dabei helfen kann.

Nun zum Problem:

Wenn ich eine FFT mit einem Sinus 5 Hz mit einer Länge von einer Sek. durchführe, dann stimmt die Skalierung der X-Achse. Nur die Y-Achse passt nicht mit der Amplitude im Zeitbereich.

Wenn ich das gleiche Signal auf 2 Sek. erhöhe, dann stimmt leider nicht mehr die X-Achse. Es wird mir die Frequenz von 10 Hz angezeigt. Ich frage mich, warum? Wo liegt der Fehler. Die Y-Achse hat sich nicht verändert. Es wäre schön, wenn ich die gleiche Amplitude im FFT-Plot angezeigt bekomme, wie im Zeitbereich

Hier mein Code:
Code:

fs = 160;
fn = fs/2;
fftBlock = 1024;
nfft = fftBlock/2;

% Generate sinus
T = 2; % sec
f = 5; % 5Hz
A = 1; % amplitude
t = 0:T/fs:T-(T/fs);
sig = A*sin(2*pi*f*t)'; % Signal: Sinus 3 Hz
siglen = length(sig);

figure(1)
plot (t,sig);

% hanning window for excluding leakage effect
win = hann(siglen);
sigwin = win.*sig;

figure(2)
plot(t, sigwin);

% Zero-Padding
if siglen < fftBlock
    Diff = fftBlock - siglen;
    ZerPad = zeros(1,Diff)';
    sig = [sigwin;ZerPad];
end

% FFT
YFFT = fft(sig, fftBlock);
Yabs = abs(YFFT);
Y = Yabs(1:nfft);

figure(3)
plot(Y);

% scale x axis in Hz
df = fs/fftBlock;
X = 0:df:fn-df;
figure (4)
plot (X,Y);

% scale y axis
Y = (2*Y)/nfft;
figure (5)
plot(X,Y)
 


Alfred001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2016, 09:59     Titel:
  Antworten mit Zitat      
Ich habe nun selbst den Fehler gefunden.

Der Fehler bezüglich der dargestellten Frequenz liegt bei der Erzeugung des Signals!

Das Signal sollte so erstellt werden:
[code]
t = 0:1/fs:T-(1/fs);
sig = A*sin(2*pi*f*t)'; % Signal: Sinus 5 Hz
siglen = length(sig);
[\code]

leider kriege ich die y Achse nicht skaliert. Kann mir da vielleicht jemand weiter helfen?
 
Alfred001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2016, 08:59     Titel:
  Antworten mit Zitat      
So, nun habe ich den weiteren Fehler erkannt.

Die Samplerate und die FFT-Buffergröße spielen eine ganz wichtige Rolle und sollten bei verschiedenen Fragestellungen richtig gewählt werden.

Ich habe nun folgendes festgestellt, in meinem Beispiel ist die Samplerate kleiner als die FFT-Buffergröße. Damit bekommt man eine Frequenzauflösung von 0.15625Hz. D.h. 5 Hz lassen sich gut auf der x-achse darstellen, denn 5 Hz ist das 32-fache von der Frequenzauflösung. Das Einzige, die Amplitude stimmt nicht und die ist scheinbar auch von der Samplerate und FFT-Buffergröße abhängig.

Nehme ich z.B. eine Samplerate von 160 Hz und eine FFT-Buffergröße von ebenfalls 160, dann habe ich eine Frequenzauflösung von 1 Hz. Hier stimmt die x-Achse haargenau und die y-achse zeigt fast exakt die gleiche Amplitude im Amplitudenspektrum, wie im Zeitbereich an.

Falls jemand noch ergänzende Anmerkungen hat, sind diese gerne willkommen!
 
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.