Complex morletウェーブレット(cmor)のFb、Fcの適切な設定は何ですか?


7

私は、MATLAB環境でCmor-Fb-FCウェーブレット変換を使用しています。Fbは帯域幅、Fcは中心周波数パラメーターです。トレイルとエラーの手順で、Fb-Fcを5-1として選択し、合理的な出力を得ました。しかし、私はFb-Fcパラメータに適切な値を選択するルールを知りたいですか?30秒間に300個のサンプルを使用しているとしましょう。サンプリング周波数は10 Hzです。これが信号です。

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);

fb =(1 / Tp)のように見えます誰かが確認しますか?
Arnaldo Batista

回答:


10

ウェーブレット変換は、時間に限定されたフィルタリング/相関演算にすぎないことを覚えておいてください。ウェーブレット変換は、フーリエ変換の影響を受けるハイゼンベルクの不確定な原理を回避するための統一されたフレームワークを提供します。したがって、「帯域幅と中心周波数の設定はどうすればよいですか」と尋ねると、フィルターパラメーターを指定する必要があります。フィルタパラメータを提供できるのは自分自身とアプリケーションだけです。これがパラメーターである理由です。:-)

より具体的には、あなたを選ぶ方法 Fc そして Fbあなたの信号の性質と関係があります。まず、いくつかの予備知識:

ウェーブレット変換は、関心のある信号の「機能」に最もよく一致するように、作成した一致フィルターにすぎません。考慮できる「機能」の1つのセットは、中心周波数の近傍と帯域幅の近傍です。繰り返しますが、あなたが探しているものを知る必要があるので、誰もあなたのためにそれらを選ぶことはできません。ただし、予想に応じた範囲を選択できます。(これは実際にはウェーブレット変換を非常に強力にする機能の1つです)。

モーレットウェーブレットは、次の関数によって与えられます。

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

ここに、 t 秒単位の時間インデックスです。 fc あなたの中心周波数であり、 Tp「期間パラメータ」と呼んでいるものを表します。上記の方程式を調べます。モーレットウェーブレットが実際に周波数を中心とする複雑な指数関数にすぎないことに注目fc、ゼロ平均ガウス関数によってウィンドウ処理され、 σ=Tp2

したがって、最初の質問に答えるために、 Fc パラメータは、問い合わせたい周波数またはその近くになるように選択する必要があります。

ウェーブレット帯域幅について:私が呼んだもの Tpここに「期間パラメータ」があり、これは帯域幅に直接関連しています。Morlet Wavelet方程式に戻り、ガウスウィンドウの代わりに長方形ウィンドウを使用したシナリオを考えます。フーリエドメインでは、このタイプのウィンドウによりsinc関数を実現します。Null-to-Null帯域幅は、Bは単純です: B=2Tperiod、(通過帯域内)。

次の図は、次の場所にある複雑な指数関数のこれを示しています fc=2 Hz、変動あり Tperiod 値:

ここに画像の説明を入力してください

期間範囲が増加すると、帯域幅が減少することがはっきりとわかります。これは、時間と周波数の関係の逆の性質です。この疑似ウェーブレットを使用したい場合、何を選びますかTperiodすることが?答えは「何でもTperiod私の興味のある信号がぶら下がっています。実際には、これはまさに短時間フーリエ変換(STFT)で行われていることですが、ボックスカーの代わりに、よりスマートなウィンドウを選択します。

次に、モーレットウェーブレット方程式を再検査し、ガウスウィンドウ関数を再挿入します。 σ=Tp2。これを行うと、次の時間領域プロットと、対応するMorletウェーブレットの離散フーリエ変換(DFT)が得られます。

ここに画像の説明を入力してください

もう一度、範囲に注意してください。複素指数をシェーディングするガウスウィンドウの分散が増加するにつれて、フーリエドメインの帯域幅が減少します。(この場合、サイドローブの振る舞いはずっと良くなりますが、これは接線方向です)。いずれにせよ、あなたは再び我々が持っているかを確認することができ、逆の関係をTp パラメータ(またはガウシアンの標準偏差パラメータのどちらか適切な方)、および対応するフィルタの帯域幅。

この知識をどうするか:これで、帯域幅がMorletウェーブレットに埋め込まれたガウスシェーディング関数にどのように関係するかを理解できました。したがって、すべての信号x[n]あなたが持っているなら、あなたは単にあなたの信号のDFTを取り、様々な中心周波数でその帯域幅を観察するかもしれません。次に、σ そして fcMorlet Waveletのパラメーターに応じて、MorletフィルターのDFT関数がテンプレート信号のDFT関数と直接オーバーラップするようにします。これは、パラメーターを設定する方法です。

上記のプロットを生成するコードは次のとおりです。

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

ありがとう!したがって、信号に3つのモード([0.1,0.3,0.6] Hz)がある場合、Fcは0.25 Hz(0.6-0.1)/ 2になりますか?信号の帯域幅をどのように決定できますか?(Fb)
SAH 2013

「ハイゼンベルグの不確実な原則を回避する」私はそれが正しくないと思います。彼らはまだ同じ問題を抱えていますが、周波数によってトレードオフが異なります。
内部石2013

3
@endolithフーリエ変換には、HUPの厚意により、100%の周波数情報と0%の時間情報が含まれています。ウェーブレットはトレードオフでこれ回避します。
Tarin Ziyaee 2013

@ endolith、@ User4619。情報をありがとう、fbとfcの選択に関する私の質問に答えてくれませんか?
SAH 2013

1
@Electricman:アプリケーションによって異なります。異なる値を試してみて、あなたが興味を持っている特徴と強調して何を参照してください。
endolith
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.