0

このタイプのデータでは、1 つの最大値から最小値への適合などの補間を行いたいので、重畳された高周波数を探すことができます。

次のような値のマトリックスがあります。

a=[ 3 7 10 3 1 5 10 5  3 2 4 8 10 7 4 3 4 2 1 4 5 7 10 8 7 6 6 4 3 2];

今、相対値と最大値と最小値を選択したいと思います

a=[ 3 0 10 0 1 0 10 0  0 2 0 0 10 0 0 0 0 0 1 0 0 0 10 0 0 0 0 0 0 2];

a(1)私は基本的に、からへa(3)、次にからa(3)へなどの直線を当てはめa(5)、データから当てはめを差し引きたいと思っています。

「bp」として示されるブレークポイント メソッドを使用する関数「detrend」があることを知っています。これは、私の目標に最も近いものです。

MATLAB でこれを行う方法を知っている場合は、大いに感謝します。それ以外の場合は、m ファイルを作成する必要があるようです。

4

1 に答える 1

1

あなたの質問が求めているのは、時系列の極小値極大値の間の補間だと思います(「相対最小値と最大値」と呼ばれるもの)。

この同様の質問を参照して、極小値と極大値の間で線形補間を行うコードを追加してください。

interp1()これを手軽に行います。入力ポイントまたは出力ポイントを等間隔にする必要はありません。

>> x = sort(rand(1,10));
>> y = rand(1,10);
>> plot (x,y,'r.');
>> xx = 0:0.01:1;
>> yy = interp1(x,y,xx);
>> hold on;
>> plot (xx,yy,'b-')

ここに画像の説明を入力


あなたが本当にやりたいと思うのは、ローカル時間スケールに基づいて信号をコンポーネントに分解することです。(つまり、周波数が時間とともに変化する場所)。経験的モード分解を使用します。ウェーブレット メソッドは別の方法かもしれませんが、EMD の出力は視覚的に解釈するのが非常に簡単です。

画像


ちなみに、単純な FFT は、時間変化する信号の全長に適用すると機能しません。FFT は、定常 (変化しない) 信号を想定しています。

短時間フーリエ変換を適用する必要があります。これは、データのスライディング ウィンドウに適用される FFT であり、時間の経過に伴う周波数の図を取得します。関数を参照してくださいspectrogram()

>> plot (x,y)
>> x=0:0.001:1;
>> y = chirp(x);
>> plot (x,y);
>> figure;
>> spectrogram(y);

ここに画像の説明を入力

サンプリング レートがデータの周波数と比較して低い場合、短時間フーリエ変換の時間対周波数の解像度に問題があり、その適用が制限されます。あなたが写真を投稿したサンプルデータではうまくいかないでしょう。

于 2012-04-25T19:58:14.290 に答える