qual é a configuração adequada para Fb, Fc na wavelet morlet complexa (cmor)?

7

Estou usando a transformação de wavelet Cmor-Fb-FC no ambiente matlab. Fb é largura de banda e Fc é parâmetros de frequência central. com o procedimento de rastreamento e erro, seleciono Fb-Fc como 5-1 e tenho uma saída racional. Mas eu quero saber qual é a regra de selecionar o valor adequado para os parâmetros Fb-Fc? Imagine que estou usando 300 amostras por 30 segundos. então minha frequência de amostragem é de 10 Hz. Aqui está o meu sinal.

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
fonte
parece fb = (1 / Tp) alguém confirma ??
Arnaldo Batista

Respostas:

10

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 et2Tp ej2π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

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

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
Tarin Ziyaee
fonte
obrigado! então se eu tiver 3 modos no meu sinal ([0,1,0,3,0,6] Hz), meu Fc será 0,25 Hz (0,6-0,1) / 2? e como eu posso determinar a largura de banda do meu sinal (Fb)?
SAH
"contornando o princípio incerto de Heisenberg" Eu não acho isso correto. Eles ainda têm o mesmo problema, mas fazem trocas diferentes em diferentes frequências.
endolith 5/08/13
3
@endolith A Transformada de Fourier contém informações de frequência de 100% e informações de tempo de 0%, cortesia do HUP. As wavelets contornam isso através de uma troca.
Tarin Ziyaee
@ endólito, @ Usuário4619. obrigado pela informação, você poderia responder minha pergunta sobre como selecionar o fb e o fc, por favor?
SAH
11
@ Eletricman: Depende da aplicação. Tente valores diferentes e ver o que destaca as características que você está interessado.
endolith