Verfasst am: 25.08.2011, 19:33
Titel: Skalierungsproblem? FFT eines Zeitsignals
Hallo,
ich habe von einem Sinuszeitsignal eine FFT machen wollen.
Mir sind da gerade beim Vergleich MATLAB mit LabVIEW einige Verschiedenheiten aufgefallen, deshalb hab ich konkrete Frage zu den jeweiligen Plots die dieser Code erzeugt:
fa = 4096; % Abtastfrequenz
fn = fa/2; % Nyquistfrequenz
N = 2048; % gewünschte FFT-Länge (N=2^x, sonst wird der DFT-Algorithmus verwendet!)
df = fa/N; % Frequenzauflösung % Erzeugung eines Datensatzes mit N Abtastwerten % ----------------------------------------------
t = 0 : 1/fa : (N-1)/fa; % x-Vektor % Frequenzvorgabe in Hz als ganzzahlig Vielfaches der Frequenzauflösung der DFT/FFT:
f1 = df*100; % bei fa = 8000 Hz und N = 1024 beträgt df = 7,8125 Hz und % f1 damit 781,25 Hz
f1 = 784;
f1 = df;
phase = pi/2;
a1=2;
y = a1*sin(2*pi*100*t); % y-Vektor % Graphische Darstellung % ---------------------- % max. Amplitude zur Skalierung der graphischen Darstellung feststellen:
max_y = max(abs(y))*1.1;
fig = figure(1);
plot(y) axis([-100 N+100 -max_y max_y]) title('Datensignal: Sinus mit 100 Hz, Amplitude = 2; N = 2048; f_a_b_t_a_s_t = 4096 Hz') ylabel('Amplitude') xlabel('Stützstelle N') grid
Plot3: jetzt einseitiges Betragsspektrum Amplitude also mal 2 = 1*2 = 2, passt auch. Hab ich auch so in LabVIEW)
Plot 4: Stell ich das nun als Dezibel dar ... da ist meine Spitze bei 6,02
bei LabVIEW sieht das generell gleich aus nur der peak ist bei 3,01 ?? hmm..und im unteren Bereich geht er bis -350, hier in MATLAB eher bis -320 dB?
Plot5: hier hab ich zweiseitig die Phase mal geplottet. Das ist sone sache, LanVIEW zeigt auch so eine Art Rauschen der Phase an. Springt immer zwischen 180 und -180 ca.? Wie muss das bei dem normalen Sinus mit 100 Hz aussehen? Weil wenn ich das mittel iwie, zeigt er mit bei der Phase in LabVIEW nichts mehr an. Also alles Null? Wie muss es korrekt sein?
Plot6: PSD, da weiss ich nicht mit den Parametern ist das so korrekt? LabVIEW geht da bei mir auch bis -320 dB.. hier ja nur bis -60. Hab Hamming fenster bei beiden und db! Oder liegt es an der Mittelungsmethode??
Plot7: das ist mir das größe Rätsel. Ich will einfach nur das Leistungsdichtespektrum. Das heisst ich nehm doch den Betrag des FFT-Wertes und quadriere ihn!? Dann bekomm ich also einen Peak der die Höhe 2 hat bei 100 Hz, oder? Zeigt mir LabVIEW auch so an. MATLAB macht hier iwas mit 2000?? 2048 iwie...sieht aus als hätte das mit meiner FFT Länge zu tun der faktor..
Moin,
ich bin mir nicht ganz sicher was du vorhast. Was hast du für ein Signal zum verarbeiten?
Was ich aber sicher sagen kann ist, dass du für die dB-Umrechnung auf jeden Fall einen Referenzdruck benötigst. Der fehlt in dem FFT-Beispiel.
Es kommt einfach darauf an, um du Leistungs- oder Spannungspegel darstellen willst.
Bei Spannung: 20*log10(U/U0)
Leistung: 10*log10(P/P0)
Eine Amplitude von 2 ergibt daher ca. 6 bzw 3 dB je nach verwendeter dB Umrechung.
Bei dem Phasenspektrum kann ich keinen Fehler in der Berechung feststellen.
Einstellungen und Berechtigungen
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
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.