Forum: Digitale Signalverarbeitung / DSP / Machine Learning DFT von einem Sinus Signal


von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab einen Sinus mit Hilfe einer DFT in den Frequenzbereich 
überführt.
Dies hab ich mit Matlab realisiert.
Nun ist es in der Realität ja so, dass die Messdauer nicht unendlich ist 
sondern nur für eine bestimmte kurze Zeit Tm. Dies bedeutet doch, dass 
ich im Zeitberich den abgetasteten Sinus mit einer Fensterfunktion r(t) 
multiplizieren muss. Im Frequenzbereich entspricht dies ja einer 
Faltung.

Wie kann man dies in Matlab realisieren?
Wenn ich nun zur Fensterung ein Blackman-Fenster benutzen will, wie kann 
man dies in Matlab realisieren?

von Jens (Gast)


Lesenswert?

Wenn ich zum Beispiel für die Fensterung das Hanning-Fenster verwenden 
möchte, dann müsste man doch das abgetastete Signal x(k) (z.B. von einem 
Sinus) mit der Fensterfunktion f(k) multiplizieren.

X1(k)=x(k)f(k)

Das x(k) von einem Sinus:
1
x_k = [1 , 0.707 , 0 , -0.707 , -1 , -0.707 , 0 , 0.707 , 1 , 0.707 , 0 , -0.707 , -1 , -0.707 ,0, 0.707];

Wenn ich nun mit Matlab diese Fensterung durchführen möchte, muss ich 
diesen Vektor mit der fensterung multiplizieren?

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Im Netz hab ich ein Beispiel gefunden. Sobald ich aber für die 
Fensterung ein Rechteck benutze, ist der Amplitudengang viel besser wie 
z.B. beim Hanning-Fenster.Das verstehe ich nicht.

von Thomas B. (detritus)


Lesenswert?

Mach den Vergleich mal mit einer Fensterlänge, die NICHT einem 
ganzzahligen Vielfachen der sin-Periodendauer entspricht. Sollte anders 
aussehen.

von Jens (Gast)


Lesenswert?

Verhält sich genauso. Wie müsste ich mein Matlab Programm "DFT_SINUS.M" 
erweitern, damit ich den Effekt einer Fensterung in Frequenzbereich 
sehen kann?

von Thomas B. (detritus)


Lesenswert?

Ganz oben hab ich mal testweise geschrieben:

y = a1*sin(2*pi*f1*0.793*t); % y-Vektor


Wenn man dann unten das rectwin durch z.b. hann ersetzt, sieht man ein 
schärferes Spektrum. Vor allem in der Figure8 wird das deutlich.

von Jens (Gast)


Lesenswert?

Vielen Dank! Wie müsste ich das MAtlab-Programm "DFT_SINUS.m" abändern, 
damit die Fensterung funktioniert und das man z.B. den Unterschied 
zwischen einem Rechteck und Hanning Fenster sehen kann?

von Thomas B. (detritus)


Lesenswert?

Zeile 19 durch

y = a1*sin(2*pi*f1*0.793*t); % y-Vektor
oder
y = a1*sin(2*pi*f1*0.092*t); % y-Vektor

ersetzen. Zusätzlich in Zeile 100 halt nen anderen Fenstertyp einsetzen.

von Jens (Gast)


Lesenswert?

Was ich dan nicht so ganz verstehe ist, warum hast du die Frequenz f1 um 
den Faktor 0.793 bzw. 0.092 verkleinert?

Nun ist es in der Realität ja so, dass die Messdauer nicht unendlich ist
sondern nur für eine bestimmte kurze Zeit Tm. Dies bedeutet doch, dass
ich im Zeitbereich den abgetasteten Sinus mit einer Fensterfunktion r(t)
multiplizieren muss. Im Frequenzbereich entspricht dies ja einer
Faltung.Bin mir nicht sicher ob dies so korrekt ist.

von Thomas B. (detritus)


Lesenswert?

Stichwort "Leakage". Wenn du ein Rechteckfenster nimmst, kriegst du ja 
ein si-Spektrum.
Ist dein Rechteckfenster so lang, dass eine ganzzahlige Anzahl von 
Perioden erfasst wird, fallen die Nullstellen vom si genau mit den 
periodischen Wiederholungen zusammen. Dann hast du kein Problem und auch 
keine Verbesserung durch eine andere Fensterung.
Ist dies nicht der Fall, sind die Nullstellen der si eben nicht mehr auf 
den Wiederholungen und du kriegst Nebenlinien. Jetzt hilft es, ein 
"sanfteres" Fenster zu nehmen, dessen Welligkeit im Spektrum nicht so 
ausgeprägt ist und eher einem Hügel ähnelt. Das sind dann hamming, hann 
usw. Dann ist die genaue Lage der periodischen Wiederholungen egal, weil 
die Amplitude des Fensterspektrums in diesem Bereich Null ist und dabei 
kaum mehr Wellen hat.

Ich hätte die Frequnz auch vergrößern können, habe mir dein file aber 
nicht genau angeschaut und wollte keine Probleme mit der Nyquist-Grenze 
kriegen. Es kommt vor allem darauf an, dass der Sinus irgendwo mitten in 
der Periode "abgehackt" wird, dass man einen Effekt zugunsten der 
"sanften" Fenster sieht.

von Jens (Gast)


Lesenswert?

In der Realität ist es ja so, dass die Messdauer nicht unendlich ist
sondern nur für eine bestimmte kurze Zeit Tm. Dies bedeutet doch, dass
ich im Zeitberich den abgetasteten Sinus mit einer Fensterfunktion r(t)
multiplizieren muss, oder?. Im Frequenzbereich entspricht dies ja einer
Faltung.

Was würde es bringen, wenn ich auf f(t) ein Fenster drüberlege?
Also ich meine mit einem Hanning-Fenster multipliziere?

Oder müsste ich das Hanning-Fenster nur über den Sinus legen?

(mit x meine ich die Spitzenspannung des Sinus)

von Thomas B. (detritus)


Lesenswert?

In der Praxis nimmt man einen Satz aus Messwerten fester Länge, z.B. 
512. Das entspricht einer Multiplikation des abgetasteten Sinus im 
Zeitbereich mit einem Rechteckfenster entsprechender Länge.

Dann kann man sich entscheiden, ob man es dabei belässt 
(-->Rechteckfenster) oder ob man zur Vermeidung des Leakage zusätzlich 
ein sanftes Fenster draufmultipliziert (-->Hann, Hamming,...) und damit 
die Messwerte entsprechend der Fensterfunktion gewichtet.

Es sind also auf den abgetasteten Sinus eine bis zwei Fensterfunktionen 
anzuwenden. Das Rechteck ist fix, und gegen Leakage kann man noch mit 
einem sanften Fenster angehen.

von Jens (Gast)


Lesenswert?

Warum sehe ich dann im Spektrum bei einem Rechteckfenster kein sin(x)/x 
?

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte mit Matlab einen Sinus, der mit einem Rechteckfenster 
überlagert ist, im Frequenzbereich darstellen.Wie bekomme ich dies mit 
Matlab hin, so das ich ein sin(x)/x Darstellung, wie im Bild vom Anhang 
bekomme?

  

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Mit zero padding:
1
plot(abs(fft([sin(0:0.3:2*pi) zeros(1,1000)])))

von Jens (Gast)


Lesenswert?

Hallo Andreas, danke für die Unterstützung.
Macht diese Matlab Zeile eine Multiplikation vom Sinus mit einem 
Rechteck?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Guck's dir doch an. Sinus mit Rechteck multipliziert = ein Stück Sinus 
mit vielen Nullen hinten dran.

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.