WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

50%-ige Überlappun bei Fensterung warum?ß

 

elcachon
Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 26.01.2012, 15:08     Titel: 50%-ige Überlappun bei Fensterung warum?ß
  Antworten mit Zitat      
Hallo Gemeinde,

Hab mir jetz einiges über FFT und Fensterung durchgelesen und speziell bei der Fensterung ist mir aufgefallen, dass meistens mit einem Overlap von 50% gearbeitet wird. Kann mir jemand sagen wieso das so ist?

lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 26.01.2012, 17:42     Titel:
  Antworten mit Zitat      
Kannst du mal bitte präziser werden?

Wo wird die Fensterung angewandt und was ist mit Überlappung gemeint? Bziehst dich evtl. auf ein Spektrogramm?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 27.01.2012, 09:19     Titel:
  Antworten mit Zitat      
Guten Morgen DSP,

hier ein kurzer Ausschnitt:

Code:

% Filterbreite 9 kHz = 111.11µs
win_length = 111.11e-06;
 % Filterbreite NFFT = Tf/tabtast
nfftx = fix(win_length/(1/abtastfreq));  
% Überlappung zweier aufeinanderfolgender Fenster = 50%
overlap = fix(nfftx/2);  
 win_seg = gausswin(nfftx);
% Anzahl der zu bearbeitenden Segmente feststellen
k_win = fix(((optimal - overlap)/(length(win_seg) - overlap)));
..............
%% Erste FFT mit Fensterung

c1 = fix((nfftx/2)+1);                                                      % Zwischenspeichern der Grenzweite bis zur Nyquistfrequenz
c2 = fix(nfftx/2);                                                          % Zwischenspeichern Grenzwert bis Nyquist ohne Gleichanteil!

ii = 1;
signal_win = sig_neu(m:nfftx+m-1) .* win_seg*nfftx/sum(win_seg);            % entnehme aus Signal das Segment der Länge nfft und multipliziere mit dem Fenster
H          = fft(signal_win, nfftx)/nfftx;                                  % Segment transformieren
H_pos0(1:c1,ii) = abs(H(1:c1));                                             % Nur positives Frequenzen werden benötigt
H_pos0(2:c2,ii) = 2 * H_pos0(2:c2,ii);                                      % Wegen positives Spektrum Amplitude*2, sonst nur halbe Energie

m = m + nfftx - overlap;                                                    % Indexstartwert für nächstes Segement bestimmen  
 


Wieso macht man den overlap nfftx/2? Man könnte doch auch 3/4*nfftx weiterrechnen oder? Hätte das Vorteile(Nachteile), wenn ja welche?

Es geht nicht um ein Spektrogramm
Die FFT wird schrittweise auf ein Signal angewandt.

Du hast mir hierbei schonmal geholfen, nur kann ich mich nicht mehr erinnern, wieso zwei Fenster genau 50% überlappt!!

lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.01.2012, 12:54     Titel:
  Antworten mit Zitat      
Ich habe k.A. warum du nun die Segmentierung machst...

Ich kann mich nur auf ein Spektrogramm beziehen. Durch die Segmentierung kann man eine Abhängigkeit zwischen Amplitude, Frequenz und Zeit darstellen. Bei einem Freq.-spektrum fehlt ja die Zeit. Durch die Anzahl der Messwerte eines Segments als auch den Overlap, wird die Auflösung von Zeit und Frequenz bestimmt. Will man eine hohe Zeitauflösung, wird die Frequenzauflösung geringer und umgekehrt...Stichwort Schmal- und Breitbandspektrum. Ein Overlap von 50% ist sozusagen der Standardwert für die Auflösung von Zeit und Freq. so dass jede Achse die bestmögliche Auflösung hat, ohne die Aufl. einer der beiden Achsen zu verringern.
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 27.01.2012, 13:12     Titel:
  Antworten mit Zitat      
Hallo DSP,

Ok das hilft mir schon mal ein bißchen weiter.
Die Segmentierung hat EMV-relevante Gründe und hat durchaus seine Begründung. Smile

Ich werd mir da jetzt interne Literatur holen, weil mir das keiner richtig erklären kann. Aber ich dank dir für deine Hilfe.

Schönes Wochenende

elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.01.2012, 17:54     Titel:
  Antworten mit Zitat      
Nun...wenn du keine Angaben machst, warum du eine Segmentierung durchführst, ist es halt auch schwer darüber eine präzise Auskunft zu geben. Auf der anderen Seite sollte es ja auch kein Ding der Unmöglichkeit sein, die Wirkung verschied. Overlaps experimentiell zu ermitteln. Nutzt du denn die Segm. um ebenfalls noch den Faktor Zeit mit einzubringen, oder stellst du nur Ampl. über Freq. dar?

Btw: Was ist EMV...Elektronische Messwertverarbeitung?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 28.01.2012, 12:36     Titel:
  Antworten mit Zitat      
Hallo DSP,
Zitat:
Btw: Was ist EMV...Elektronische Messwertverarbeitung?

EMV = Elektormagnetische Verträglichkeit!

Nein der Faktor Zeit spielt keine Rolle. Im Spektrum wird nur die Amplidute gegenüber der Frequenz im logarithmischen Maßstab gegenüber gestellt.

Durch Fensterung erreiche ich eine spezielle Bewertung(Gewichtung ) des Spektrums.
Code:
%% For Schleife für die verbeleibenden Segmente
for ii=3:k_win
     
      signal_win      = sig_neu(m:nfftx+m-1) .* win_seg*nfftx/sum(win_seg); % entnehme aus Signal das Segment der Länge nfft und multipliziere mit dem Fenster
      H               = fft(signal_win, nfftx)/nfftx;                       % Segment transformieren
      H_pos0(1:c1,ii) = abs(H(1:c1));                                       %  aus H werden nur die Werte 1...257 = (nfftx/2) + 1 entnommen wenn nfftx = 512
      H_pos0(2:c2,ii) = 2 * H_pos0(2:c2,ii);                                % Normierung
      spec_peak(:,2)         = max(spec_peak(:,2), H_pos0(:,ii));           % bei jedem Schleifendurchlauf wird spec_peak upgedated                      
     
      m = m + nfftx - overlap;                                              % Indexstartwert für nächstes Segement bestimmen  
end


Nach jeder Transformation werden jeweils die maximal Werte aus der Matrix H_Pos in spec_peak übertragen. Dies nennt man die PEAK Bewertung. Dabei wird ein in der EMV typischer Mess-Detektor nachgebildet, bei dem nur die Spitzenwerte relevant sind.

Ich hoffe das klärt ein bißchen die Relevanz der Segmentierung?!

Schönen Samstag noch!

lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2012, 19:02     Titel:
  Antworten mit Zitat      
Also wenn ich das richtig verstehe, dann heißt Segmentierung bei dir, dass du einen Teil des Signals (Segment) entnimmst, mit einem Gaussfenster der Länge des Segments multiplizierst, dann die FFT machst und dann daraus die Maxima ableitest richtig?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 30.01.2012, 08:33     Titel:
  Antworten mit Zitat      
Guten Morgen Scriptor,

genau! Das heisst, ich vergleiche das fouriertransformierte Segment mit den Werten des transformierten Segments vorher
Code:
spec_peak(:,2)  
und übernehme jeweils nur die Maxima.

Ist halt eine Bewertungsweise, die für meine Arbeit relevant ist!!

lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.01.2012, 09:04     Titel:
  Antworten mit Zitat      
Wäre es da nicht sinvoller komplett auf den Overlap zu verzichten (=0) damit du zwei voneinander unabhängige Segmente hast. Mit Overlap = 0.5 haben ja beide Segmente 50% die gleichen Messwerte. Somit werden u.U. nie die neuen Messwerte mit eingehen.

Ist aber nur so ein Gedanke...ich kenne diese Bewertungsform nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 15:13     Titel:
  Antworten mit Zitat      
mir gehts da wie DSP. Diese Bewertungsform habe ich noch nie gesehen. Algorithmisch betrachtet nimmst du dir da nur Teile des Gesamtintegrals und des abgetasteten Feldes vor, und betrachtest auch nur Teile von Frequenzen, also nur einen bestimmten viereckigen Teil der Fouriertmatrix. Ich kann mir nur vorstellen, dass es hilft versteckte Frequenzen besser zu beobachten und zu finden, da durch das Integral viele "Fehler" verwischt werden. Die 50 % Overlap betrachten da immer die Hälfte des Spektrums. D. h. dass du anstatt beispielsweise von -50 bis 50 Hez nur -25 bis 25 Hz betrachtest. Das macht dahingehend Sinn, dass jede FFT eh immer nur durch ein Fenster aufgenommen wird und die meisten Sachen sich amplitudentechnisch auch dort abspielen. Es hilft wahrscheinlich Störungen zu lokalisieren, sprich wo sich bestimmte Frequenzanteile wo befinden. Man könnte auch kleinere Overlaps nehmen, das würde dem Gedankenkonstrukt zu folge aber die Auflösung minimieren, aber auch größere, aber das würde die Fensterbreite zu groß gestalten und Fehler die zu finden wären wieder verschwinden.

So könnte es sein. Bin aber nicht abschließend sicher.

Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 30.01.2012, 16:54     Titel:
  Antworten mit Zitat      
Hallo Scriptor,

danke für deine Mühe. So könnte es theoretisch schon sein, wer da auf alle Fälle nochmals genauer nachfragen und lesen müssen, aber danke für deine Hilfe!!

lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.