Was ist die richtige Einstellung für Fb, Fc im komplexen Morlet-Wavelet (cmor)?

7

Ich verwende die Cmor-Fb-FC-Wavelet-Transformation in einer Matlab-Umgebung. Fb ist die Bandbreite und Fc ist die Mittenfrequenzparameter. Mit der Trail- und Fehlerprozedur wähle ich Fb-Fc als 5-1 und habe eine rationale Ausgabe. Aber ich möchte wissen, nach welcher Regel der richtige Wert für die Fb-Fc-Parameter ausgewählt wird. Stellen Sie sich vor, ich verwende 300 Proben über 30 Sekunden. Meine Abtastfrequenz beträgt also 10 Hz. Hier ist mein Signal.

x=sin(2*pi*t*.1).*(t<10)+sin(2*pi*t*0.3).*... 
    (t<30)+sin(2*pi*t*0.6).*(t<10).*exp(-t*.1);
SAH
quelle
sieht aus wie fb = (1 / Tp) jemand bestätigt?
Arnaldo Batista

Antworten:

10

Denken Sie daran, dass Wavelet-Transformationen nichts anderes als zeitlokalisierte Filter- / Korrelationsoperationen sind. Die Wavelet-Transformationen bieten einen einheitlichen Rahmen, um das Heisenberg-Unsicherheitsprinzip zu umgehen , unter dem die Fourier-Transformation leidet. Wenn Sie also fragen, "wie sollen meine Einstellungen für Bandbreite und Mittenfrequenz sein", fragen Sie nach Filterparametern , die Ihnen gegeben werden sollen. Niemand außer Ihnen und Ihrer Anwendung kann Ihnen Filterparameter geben. Deshalb sind sie Parameter. :-)

Genauer die Auswahl von und mit der Art Ihres Signals zu tun. Zunächst einige Vorkenntnisse:FcFb

Wavelet-Transformationen sind nichts anderes als übereinstimmende Filter, die Sie erstellen, sodass Sie am besten zu den 'Features' in Ihrem interessierenden Signal passen. Ein Satz von "Merkmalen", die Sie in Betracht ziehen könnten, wäre die Nachbarschaft der Mittenfrequenz und die Nachbarschaft der Bandbreite. Auch hier kann niemand diese für Sie auswählen , da Sie wissen müssen, wonach Sie suchen. Sie können jedoch einen Bereich auswählen, der Ihren Erwartungen entspricht. (Dies ist tatsächlich eine der Funktionen, die Wavelet Transforms sehr leistungsfähig machen).

Das Morlet-Wavelet ist durch die folgende Funktion gegeben:

Ψ(t,fc,Tp)=1πTp et2Tp ej2πfct

Hier ist der Zeitindex in Sekunden, ist Ihre Mittenfrequenz und repräsentiert das, was ich als "Periodenparameter" bezeichnet habe. Überprüfen Sie die obige Gleichung. Beachten Sie, dass das Morlet-Wavelet tatsächlich nichts anderes als ein komplexes Exponential ist, das bei der Frequenz zentriert ist und durch eine -Funktion mit dem Mittelwert Null mit gefenstert wirdtfcTpfcσ=T.p2

Um Ihre erste Frage zu beantworten , muss der Parameter so gewählt werden, dass er auf oder nahe der Frequenz liegt, die Sie abfragen möchten.F.c

In Bezug auf die Wavelet-Bandbreite: Was ich hier habe, ist Ihr "Periodenparameter", und dies hängt direkt mit Ihrer Bandbreite zusammen. Kehren Sie zur Morlet-Wavelet-Gleichung zurück und betrachten Sie ein Szenario, in dem anstelle eines Gaußschen Fensters ein rechteckiges Fenster verwendet wurde. In der Fourier-Domäne erreichen wir aufgrund dieses Fenstertyps eine sinc-Funktion, und wir können sagen, dass die Null-zu-Null-Bandbreite einfach ist: , ( im Durchlassbereich).T.pB.B.=2T.perichÖd

Die folgende Abbildung zeigt dies für ein komplexes Exponential bei Hz mit variierenden -Werten:fc=2T.perichÖd

Geben Sie hier die Bildbeschreibung ein

Sie können deutlich sehen, dass die Bandbreite mit zunehmender Periodenausdehnung abnimmt. Dies ist die umgekehrte Natur der Zeit-Frequenz-Beziehung. Wenn Sie dieses Pseudo-Wavelet verwenden möchten, wie würden Sie die auswählen ? Die Antwort wäre "Was auch immer mein interessierendes Signal ist". In der Tat, das ist genau das, was in der Kurzzeit-Fourier-Transformation (STFT) durchgeführt wird, obwohl man eine intelligentere Fenster anstelle des Boxcar holen würde.T.perichÖdT.perichÖd

Lassen Sie uns nun die Morlet-Wavelet-Gleichung erneut untersuchen und die Gaußsche Fensterfunktion mit erneut einfügen . Wenn wir dies tun, erhalten wir die folgenden Zeitbereichsdiagramme und die entsprechenden diskreten Fourier-Transformationen (DFT) der Morlet-Wavelets:σ=T.p2

Geben Sie hier die Bildbeschreibung ein

Beachten Sie erneut, wie mit zunehmender Ausdehnung - wenn die Varianz der Gaußschen Fensterschattierung des komplexen Exponentials zunimmt - die Bandbreite in der Fourierdomäne abnimmt. (In diesem Fall haben wir ein viel besseres Nebenkeulenverhalten, aber dies ist tangential). In jedem Fall können Sie noch einmal sehen, wie wir eine umgekehrte Beziehung zwischen dem Parameter (oder dem Standardabweichungsparameter Ihres Gaußschen, je nachdem, was zu Ihnen passt) und der Bandbreite des entsprechenden Filters haben.T.p

Was tun mit diesem Wissen? Jetzt verstehen Sie, wie die Bandbreite mit der im Morlet Wavelet eingebetteten Gaußschen Schattierungsfunktion zusammenhängt. Somit können Sie für jedes Signal Sie haben, einfach die DFT Ihres Signals nehmen und dessen Bandbreiten bei verschiedenen Mittenfrequenzen beobachten. Dann stellen Sie das und Parameter Ihrer Morlet Wavelet dementsprechend , so daß die Funktion der DFT Morlet - Filter direkt die DFT Funktion des Schablonensignals überlappt. So können Sie Ihre Parameter einstellen.x[n]]σfc

Der Code zum Generieren der obigen Diagramme ist hier:

clear all;
fS = 500;
tStart = -4;
tStop = 4;
timeVector = linspace(tStart,tStop, (tStop-tStart)*fS );
fCenter = 2;
tP = [0.2 1 3];
exps = length(tP);

figure(1); clf(1);
figure(2); clf(2);
for ii = 1:exps

    tPeriod = tP(ii);
    timeMask = zeros(1,length(timeVector));
    timeMask((timeVector >= -tPeriod/2) & (timeVector <= tPeriod/2)) = 1;

    psiFakeWavelet = exp(2*1i*pi*fCenter.*timeVector).*timeMask;
    psiWavelet = ((pi*tP(ii))^(-0.5)).*exp(2*1i*pi*fCenter.*timeVector).*exp(-timeVector.^2/tP(ii));

    %Demonstrating the Rectangular Window
    figure(1);
    subplot(3,2,2*ii-1);
    plot(timeVector,real(psiFakeWavelet), timeVector,imag(psiFakeWavelet));
    ylim([-1.2 1.2])
    xlabel('Time / Seconds');
    title(sprintf('Morlet Wavelet, T_{period} = %2.2f, f_c = %2.2f Hz', tPeriod, fCenter));

    input = psiFakeWavelet;
    Nfft = 10 * 2^nextpow2(length(input));
    psd = 20.*log10(fftshift(abs(fft(input,Nfft))));
    freqs = [0:Nfft - 1].*(fS/Nfft);
    freqs(freqs >= fS/2) = freqs(freqs >= fS/2) - fS;
    freqs = fftshift(freqs);
    figure(1);
    subplot(exps,2,2*ii);
    plot(freqs, psd); 
    xlim([-10  15]);
    xlabel('Frequency / Hz');
    title (sprintf('PSD, Null-Null-BW = %2.2f Hz', 2/tPeriod));

    %Demonstrating the Morlet Wavelet
    figure(2);
    subplot(3,2,2*ii-1);
    plot(timeVector,real(psiWavelet), timeVector,imag(psiWavelet));
    ylim([-1.2 1.2])
    xlabel('Time / Seconds');
    title(sprintf('Morlet Wavelet, T_{period} = %2.2f, f_c = %2.2f Hz', tPeriod, fCenter));

    input = psiWavelet;
    Nfft = 10 * 2^nextpow2(length(input));
    psd = 20.*log10(fftshift(abs(fft(input,Nfft))));
    freqs = [0:Nfft - 1].*(fS/Nfft);
    freqs(freqs >= fS/2) = freqs(freqs >= fS/2) - fS;
    freqs = fftshift(freqs);
    figure(2);
    subplot(exps,2,2*ii);
    plot(freqs, psd); 
    xlim([-10  15]);
    xlabel('Frequency / Hz');
    title ('Wavelet PSD');

end
Tarin Ziyaee
quelle
Vielen Dank! Wenn ich also 3 Modi in meinem Signal habe ([0,1,0,3,0,6] Hz), dann ist mein Fc 0,25 Hz (0,6-0,1) / 2? und wie kann ich die Bandbreite meines Signals bestimmen? (Fb)
SAH
"Das Heisenberg-Prinzip unsicher umgehen" Ich denke nicht, dass das ganz richtig ist. Sie haben immer noch das gleiche Problem, aber sie machen unterschiedliche Kompromisse bei unterschiedlichen Frequenzen.
Endolith
3
@endolith Die Fourier-Transformation enthält 100% Frequenzinformationen und 0% Zeitinformationen, mit freundlicher Genehmigung des HUP. Wavelets umgehen dies durch einen Kompromiss.
Tarin Ziyaee
@ endolith, @ User4619. danke für informationen, würdest du bitte meine frage zur auswahl von fb und fc beantworten?
SAH
1
@Electricman: Das hängt von der Anwendung ab. Probieren Sie verschiedene Werte aus und sehen Sie, welche Funktionen Sie interessieren.
Endolith