Lembre-se de que as Wavelet Transforms nada mais são do que operações de filtragem / correlação localizadas no tempo . As transformadas wavelet fornecem uma estrutura unificada para contornar o Princípio de Incerteza de Heisenberg do qual a Transformação de Fourier sofre. Portanto, quando você pergunta "quais devem ser minhas configurações para largura de banda e frequência central", você está solicitando que os parâmetros de filtro sejam fornecidos a você. Ninguém pode fornecer parâmetros de filtro além de você e seu aplicativo. É por isso que eles são parâmetros. :-)
Mais concretamente, como escolher o seu e tem a ver com a natureza do seu sinal. Primeiro, alguns pré-limites:FcFb
As transformações da Wavelet nada mais são do que filtros combinados que você constrói, para que você tenha a melhor correspondência com os 'recursos' no seu sinal de interesse. Um conjunto de 'recursos' que você pode considerar seria a vizinhança da frequência central e a vizinhança da largura de banda. Mais uma vez, ninguém pode escolher isso para você , porque você precisa saber o que está procurando. No entanto, você pode escolher um intervalo proporcional ao que você espera. (Este é realmente um dos recursos que tornam o Wavelet Transforms muito poderoso).
A wavelet de morlet é dada pela seguinte função:
Ψ(t,fc,Tp)=1πTp−−−√ e−t2Tp e−j2πfct
Aqui, é o índice de tempo em segundos, é sua frequência central e representa o que chamei de "Parâmetro de período". Inspecione a equação acima. Observe como a wavelet morlet não é senão uma exponencial complexa centrada na frequência , exibida por uma função gaussiana de média zero, comtfcTpfcσ=Tp2−−√
Portanto, para responder à sua primeira pergunta, o parâmetro , deve ser escolhido de forma a a frequência que você deseja interrogar ou próximo a ela.Fc
Em relação à largura de banda da wavelet: O que chamei de aqui é o seu "Parâmetro de período", e isso está diretamente relacionado à sua largura de banda. Volte à equação de Morlet Wavelet e considere um cenário em que, em vez de uma janela gaussiana, usamos uma janela retangular. No domínio de Fourier, atingimos uma função sinc devido a esse tipo de janela e podemos dizer que a largura de banda nula para nula, , é simplesmente: , ( na banda passante).TpBB=2Tperiod
A figura abaixo ilustra isso para um exponencial complexo localizado em Hz, com valores variáveis de :fc=2Tperiod
Você pode ver claramente que, à medida que a extensão do período aumenta, a largura de banda diminui. Essa é a natureza inversa da relação tempo-frequência. Se você quisesse usar essa pseudo-wavelet, qual escolheria o ? A resposta seria "Qualquer que seja o meu sinal de interesse em". De fato, isso é exatamente o que é feito na Transformada de Fourier de Curto Tempo (STFT), embora alguém escolha uma janela mais inteligente em vez do vagão.TperiodTperiod
Agora, vamos re-inspecionar a equação de Morlet Wavelet e reinserir a função gaussiana de janelas, com . Se fizermos isso, obteremos os seguintes gráficos no domínio do tempo e as Transformadas Discretas de Fourier (DFT) correspondentes das Morlet Wavelets:σ=Tp2−−√
Mais uma vez, observe como, à medida que a extensão - à medida que a variação da janela gaussiana sombreada pelo complexo exponencial aumenta, a largura de banda no domínio de Fourier diminui. (Nesse caso, temos um comportamento do lobo lateral muito melhor, mas isso é tangencial). Em qualquer caso, você pode ver mais uma vez como temos uma relação inversa entre o parâmetro ((ou o parâmetro de desvio padrão do seu gaussiano, o que mais lhe convier)) e a largura de banda do filtro correspondente.Tp
O que fazer com esse conhecimento: Agora você entende como a largura de banda está relacionada à função de sombreamento gaussiano incorporada na Morlet Wavelet. Assim, para qualquer sinal você possua, você pode simplesmente pegar a DFT do seu sinal e observar suas larguras de banda em várias frequências centrais. Em seguida, ajuste os parâmetros e do seu Morlet Wavelet adequadamente, de modo que a função DFT do filtro Morlet se sobreponha diretamente à função DFT do seu sinal de modelo. É assim que você pode definir seus parâmetros.x[n]σfc
O código para gerar os gráficos acima está aqui:
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