Forum: Analoge Elektronik und Schaltungstechnik FFT Oszilloskop und Periodogram aus Matlab


von Marius (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Folgender Aufbau:
Signal Generator (1 Hz, 100 mVpp) => Oszilloskop (1 MEG Ohm Eingang)

Das Signal ist im ersten Plot zu sehen.

Der zweite Plot enthält die vom Oszilloskop berechnte FFT. Da ist auch 
mein 1 Hz Signal gut zu erkennen. Eingestellt war ein Span von 20 Hz, 
mitte auf 10 Hz und Skalierung auf 20 dB. Die Daten für die ersten zwei 
Plots kommen direkt aus dem Oszilloskop.

Der letzte Plot entsteht durch das in Matlab berechnte Periodogram.
Allerdings wundere ich mich warum das Signal so kantig ist, bzw. so 
wenig Datenpunkte vorhanden sind?

Das Oszilloskop stand auf 1s/div, was im ganzen 10 s Samplezeit ergibt.
Desweiteren hat es mit 100 Sa/s Daten aufgenommen.

Daher:

<source lang="c">

Fs=100; % Sampling

% Periodogram
[Pxx, F] = periodogram(u, rectwin(length(u)), length(u), Fs);
Uxx=sqrt(Pxx*1e6); % 1 MEG Ohm Eingangswiderstand, Spannung ausgerechnet 
% U=sqrt(P*R)

figure;
subplot(3,1,1); % Signal
plot(t, u*1000);
xlabel('time [s]');
ylabel('amplitude [mV]');
title('signal');

subplot(3,1,2);
plot(f_fft,u_fft); % FFT Aus Oszi
xlabel('Frequency [Hz]');
ylabel('amplitude [dBV]');
title('FFT Oscilloscope');

subplot(3,1,3);
loglog(F,Uxx);
grid on;
title('Periodogram');
xlabel('Frequency [Hz]');
ylabel('amplitude ');

</source>

Was mache ich falsch, bzw. was kann ich besser machen?

von Frank K. (kibabalu)


Lesenswert?

zuerst einmal solltest Du die Achsen gleich skalieren, d.h. sowohl die 
Frequenz-Achse, als auch die Y-Achse. Letztere ist einmal logarithmisch 
und einmal linear.

Des Weiteren berechnet die Periodogram-Funktion von Matlab, sofern ich 
mich richtig erinnere, nicht nur das Frequenzspektrum, sondern das 
Leistungsdichtespektrum, also sozusagen das Quadrat der 
Frequenzspektrums (mathematisch nicht ganz richtig, kann man sich aber 
so vorstellen).

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Marius schrieb:
> Allerdings wundere ich mich warum das Signal so kantig ist, bzw. so
> wenig Datenpunkte vorhanden sind?

Deine Frequenzachse ist logarithmisch, deine Daten aus der FFT sind fuer 
linear gestaffelte Frequenzen - klar sind da links eher wenige Daten/cm 
im Diagramm...

Gruss
WK

von Marius (Gast)


Angehängte Dateien:

Lesenswert?

Auch wenn die Achsen linear sind, sieht es sehr "zerhackt" aus.

Ich habe mit der Zeile Uxx=sqrt(Pxx*1e6); versucht die Spannung zu 
berechnen. Wie kann ich das ganze in die Form Volt/sqrt(Hz) bringen?

von Marius (Gast)


Lesenswert?

Oder ist das normal?

von Anja (Gast)


Lesenswert?

Marius schrieb:
> Allerdings wundere ich mich warum das Signal so kantig ist, bzw. so
> wenig Datenpunkte vorhanden sind?

Dir ist aber schon klar daß bei 10 Sekunden Aufzeichnungsdauer die 
Frequenzauflösung nur 0.1 Hz ist?

Gruß Anja

von Achim S. (Gast)


Lesenswert?

Marius schrieb:
> Auch wenn die Achsen linear sind, sieht es sehr "zerhackt" aus.

bei deinem zweiten Versuch ist die y-Achse beim Oszi weiter 
logarithmisch (Pegelangabe), die y-Achse des Matlab-Plots aber linear - 
also wieder nicht besonders gut vergleichbar.

Weiter sieht es für mich so aus, als wäre bei der Oszi-FFT eine 
Fensterfunktion verwendet worden (evtl. Flat-Top?), bei  der Matlab-FFT 
aber entweder keine Fensterung (oder eine andere Fensterfunktion)

Marius schrieb:
> Das Oszilloskop stand auf 1s/div, was im ganzen 10 s Samplezeit ergibt.
> Desweiteren hat es mit 100 Sa/s Daten aufgenommen.

Dann sollten die Frequenzbins der FFT 0,1Hz auseinander liegen. Das 
passt ganz gut zu der "Eckigkeit" der Matlab-FFT.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.