Verfasst am: 27.09.2011, 07:57
Titel: Zero Padding - Wer zum Henker hat Recht??
Hallo!
Ja ich weiß, dass dieses Thema schon x - mal durchgekaut wurde, aber leider behauptet jeder (auch in diesem Forum) etwas anderes?
Mir ist klar, dass eine Haupaufgabe des paddings ist, die aktive FFT Länge auf eine 2er Potenz anzugleichen, macht ja auch sinn!
Aber wird jetzt die Frequenzauflösung erhöht ja oder nein??
Manche sagen ja, andere wiederrum sagen nein, da um eine höhere Aulösung zu erhalten mehr Signalinformation benötigt wird!
Was ist also richtig?????
Und ist Zero-Padding dann überhaupt sinnvoll, wenn ich z.B mein Signal (evtl. durch Fensterung) gleich von vornherein auf einer 2er Potenz festlege??
Wenn sich die Frequezauflösung erhöhen würde, dann macht es Sinn, oder bin ich da auf dem Holzweg???
Das lässt sich doch relativ einfach überprüfen. Die Frequenzauflösung oder diskrete Schrittweite des Spektrums ist:
df = fa/N mit fa = Abtastfrequenz und N = Anzahl Messwerte
Wenn N größer wird, wird df kleiner...also ist die Frequenzauflösung höher. Wenn die Signallänge ohnehin schon eine 2er Potenz ist, braucht man es nicht mehr. Will man dennoch eine höhere Auflösung haben, sollte man eher die Messzeit und damit die Anzahl an realen Messwerten erhöhen, als dass durch Zeropadding zu realisieren. Denn durch die Nullen gibt es ja keine neue Informationen.
ich glaub mittlerweile hast du 97% meiner Fragen beantwortet!!
Also das hört sich ziemlich logisch an, danke schon mal! Dacht mir schon, dass es sinnvoller ist mehr messwerte auzunehmen anstatt nullen anzuhängen!!
Neue Frage:(hoffe des geht in Ordnung?)
Wie ist es wenn ich ein bereits diskretisiertes Signal habe und die darin vorkommende höchstmögliche Frequenz kenne, stell ich ja meine abtastfrequenz bezüglich dieser höchsten Frequenz ein, richtig oder?
Wie aber kann ich z.B meine Fensterbreit einstellen, um den Leakage Effekt vermeiden zu können?
Bezieh ich mich da wieder auf die höchste Frequenz oder wie ist das zu realisieren??
Wie ist es wenn ich ein bereits diskretisiertes Signal habe und die darin vorkommende höchstmögliche Frequenz kenne, stell ich ja meine abtastfrequenz bezüglich dieser höchsten Frequenz ein, richtig oder?
Falsch...das Signal wurde mit einer FESTEN Abtastfrequenz diskretisiert. Dabei muss man das Abtasttheorem beachten, dass besagt:
Die Abtastfrequenz fa muss mindestens doppel so hoch sein, wie die maximale Frequenz f in dem Signal selbst. fa >= 2 * f
Wenn du die Abtastfrequenz ändern willst, geht das nur durch down- oder upsampling. Dadurch ändert sich ja auch die Anzahl der Messwerte N. Um Leakage zu vermeiden, kann man also nur das N variieren, da fa ja fest ist. Leakage tritt dann auf, wenn die Signalfrequenzen kein vielfaches von df sind. Oder im Zeitbereich...das Messfenster enthält keine vollen Perioden des Signals. Wenn man nur eine Frequenz hat, wäre das ja einfach. So bald es aber viele Überlaguerungen gibt, kann man nicht mehr sagen, ob ich im Messfenster volle Perioden habe. Deshalb nimmt man dann eine Fensterfunktion um Leakage zu minimieren. Die Fensterlänge wählt man dann entsprächend der Messzeit, bzw. der Anzahl von Messwerten.
das Signal wurde mit einer FESTEN Abtastfrequenz diskretisiert
Genau das ist eben nicht so! Bei meinen Signalen ist meistens die Abtastfrequenz VARIABEL von einem Simulator gewählt worden!
In den Bereichen, in denen sich das Signal ändert wird mehr abgetastet, an den anderen Stellen weniger!!
Aber ich weiß trotzdem, dass meine Frequenzen in dem diskretisierten Signal in einem Bereich von z.B 150k - 30MHz liegen.
Dann pass ich doch beim resampling meine neue, in diesem Fall jetzt FESTE Abtastfrequenz bezüglich der 30MHz an oder?
Hab folgendes Beispiel für ein Blackman Fenster gefunden!
Code:
% Add a "Blackman window"
N = 64;
zpf = 100; % Zero- padding - factor
w = blackman(N)'; % w zu Zeilenvektor, da blackman algorithmus spaltenvektor ausgibt % w = .42-.5*cos(2*pi*(0:N-1)/(N-1))+.08*cos(4*pi*(0:N-1)/(N-1)); if you % don´t have the signal processing toolbox
% Also show the window transform -->
xw = [w,zeros(1,(zpf-1)*N)]; % zero-padded window (col vector)
Xw = fft(xw); % Blackman window transform
nfft = zpf * N; % Anzahl der anzängenden Nullen
spec = 20*log10(abs(Xw)); % Spectral magnitude in dB
spec = spec - max(spec); % Usually we normalize to 0 db max
spec = max(spec,-100*ones(1,nfft)); % clip to -100 dB
fni = 0:1.0/nfft:1-1.0/nfft; % Normalized frequency axis! subplot(3,1,2); plot(fni,spec,'-'); axis([0,1,-100,10]); grid;
xlabel('Normalized Frequency (cycles per sample))');
ylabel('Magnitude (dB)');
text(-.12,20,'b)');
% Replot interpreting upper bin numbers as negative frequencies:
nh = nfft/2;
specnf = [spec(nh+1:nfft),spec(1:nh)]; % see also Matlab's fftshift()
fninf = fni - 0.5;
subplot(3,1,3);
plot(fninf,specnf,'-'); axis([-0.5,0.5,-100,10]); grid;
xlabel('Normalized Frequency (cycles per sample))');
ylabel('Magnitude (dB)');
text(-.6,20,'c)')
Aha...ok. Das hättest du ja mal dazuschreiben können. Die variable Simulationschritteweite hat aber nichts mit der Abtastfrequenz zu tun .
Dennoch gilt immer noch das Abtasttheorem. Wenn das Signal also richtig rekonstruiert werden soll, muss fa >= 2*fmax sein. fmax ist hier 30 MHz.
Edit: zu der anderen Frage: Das Signal wird einfach auf 1 (= 0 dB) skaliert und auf -100 dB begrenzt. Da es ja nur eine Skalierung ist, kann man es auch weglassen.
ja ich weiß, sorry!
meistens fallen dir halt die wichtigen Sachen immer zum Schluss ein!
Danke dir, denk ich habs verstanden!
Dr. Knopf
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.10.2011, 15:28
Titel:
Natürlich erhöht Zeropadding die Frequenzauflösung!
Und es ist nicht immer sinnvoll die Messdauer zu erhöhen, das bringt ja etwa bei einem periodischen Signal auch keinen Informationsgewinn.
Die Redundanz die dann im Spektrum steckt stört ja nicht, aber häufig wird ja eine Darstellung im Spektralbereich verwendet um eine Eigenfrequenz oder eine harmonische Erregung zu Messen und dann hilft Zeropadding eben sehr; etwa ist die Netzfrequenz mittags wenn gekocht wird etwas unter 50 Hz, ich habe so 49,97 Hz gemessen, nachmittags liegt sie dann über 50 Hz, im Mittel müssen es aber exakt 50 Hz sein. 49,97 Hz lassen sich eigentlich nur mit Zeropadding oder einem anderen Verfahren das mir die Frequenzauflösung erhöht sinnvoll messen.
Ich würde ja dann als cut off Frequenz 100 Hz einstellen --> f_sample=200Hz. Als Auflösung mindestens delta_f=0.01 Hz, womit mein Datenblock 20000 Werte enthält. D.h. 100 s warten für die Messung. Das geht mit Zeropadding schneller!
Natürlich erhöht Zeropadding die Frequenzauflösung!
Die erhöhte Frequenzauflösung bedeutet aber nicht automatisch Informationsgewinn.
Dr. Knopf hat Folgendes geschrieben:
Und es ist nicht immer sinnvoll die Messdauer zu erhöhen, das bringt ja etwa bei einem periodischen Signal auch keinen Informationsgewinn.
Da wir von realen Signalen ausgehen bringt im Sinne einer Mittelung die längere Aufnahmezeit eben doch einen Informationsgewinn. Man wird eine Eigenfrequenz nicht durch Zeropadding "genauer" bestimmen können.
_________________
Wenn es um die genauere Bestimmung einzelner lokaler Maxima geht, stimme ich dir zu. Was ist aber, wenn man eben nicht nur die Netzfrequenz ermitteln möchte, sondern das Spektrum/Verhalten eines Systems bei unterschiedlichsten Anregungen untersuchen will. Man interpoliert zwar durch die Nullen weitere Stützstellen, was aber nicht unbedingt einen Informationsgewinn über die Systemeigenschaften bringen muss. Da gilt dann eher...größeres Messfenster, genauere Informationen
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.