1D信号を外挿するにはどうすればよいですか?


25

ある程度の長さの信号、たとえば1000サンプルがあります。この信号を5000サンプルに拡張し、元のサンプルと同じレートでサンプリングします(つまり、長時間サンプリングし続けた場合に信号がどうなるかを予測したい)。信号は、いくつかの正弦波成分を加算して構成されています。

最初に思いついた方法は、FFT全体を取得して拡張することでしたが、これによりフレーム1001で非常に強い不連続性が残ります。また、ピーク付近のスペクトルの一部のみを使用することも検討しました。信号をいくらか改善しますが、位相が正しいことが保証されているとは思えません。この信号を拡張する最良の方法は何ですか?

以下は、私が望む理想的な方法を示すMATLABコードです。もちろん、正確に3つの正弦波成分が存在することも、正確な位相と周波数があることも事前にはわかりません。関数が連続的であること、ポイント501に移動してもジャンプしないことを確認したい、

vals = 1:50;
signal = 100+5*sin(vals/3.7+.3)+3*sin(vals/1.3+.1)+2*sin(vals/34.7+.7); % This is the measured signal
% Note, the real signal will have noise and not be known exactly.
output_vals = 1:200;
output_signal = 100+5*sin(output_vals/3.7+.3)+3*sin(output_vals/1.3+.1)+2*sin(output_vals/34.7+.7); % This is the output signal

figure;
plot(output_signal);
hold all;
plot(signal);

基本的に、緑の線が与えられたら、青の線を見つけたいです。 ここに画像の説明を入力してください


3
これは、画像をタイリングしたり、空の延長のようなことをしたりするのですか?言い換えれば、拡張機能がエッジで「滑らか」であることに加えて、他の品質尺度がありますか?
データガイスト

3
あなたの質問は明確ではありません。「拡張」とはどういう意味ですか?信号のコピーを複製して分類しようとしていますか(タイル)、それを5倍アップサンプリングしますか、それとも5倍長く記録しますか?信号は周期的ですか?より具体的で明確に定義された質問が必要であり、あなたが達成しようとしていることの最小限の例が間違いなく役立つと思います。
ローレムイプサム

1
拡張は補間を意味しますか?質問はあまり明確ではありません。
スリラム

それが非常に多くのことを意味する可能性があることに気付いたことはありません...基本的には同じレートで、より長い期間サンプリングされる1次元信号を持ちたいと思っています。
PearsonArtPhoto

1
@endolith:それは物事を改善しますか?
PearsonArtPhoto

回答:


16

ソース素材に応じて、次の論文で説明されているDCTベースのスペクトル補間法は有望に見えます。

lk、HG、GülerS. 「修正DCT合成に基づく信号変換および補間」、デジタル信号処理、2011年の記事

これは、補間の例を示す論文の図の1つです。

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

失われたセグメントの回復への技術の応用(例えば、4.2。失われたピッチ周期の合成)は、おそらく外挿に最も関連しています。言い換えると、既存のソースマテリアルの一部を取得し、エッジと選択した任意のセグメントの間に失われたセグメントがあるふりをして、「欠落」部分を「再構築」します(そして、おそらく最後に使用した部分を破棄します)。ソース素材をシームレスにループさせるには、この手法をさらに簡単に適用すると思われます(たとえば、3.1。スペクトル振幅の補間)。


1
悲しいことにリンクは死んでいます。この有料ダウンロードしか見つけることができませんでした。
knedlsepp

@knedlsepp このリンクは、ペイウォールの背後にいなくても論文を提供するようです。
ピーターK。

18

私はあなたが探しているものは線形予測コーディング自己回帰移動平均とも呼ばれます)だと思います。LPCは、最初に線形モデルを時系列に当てはめることにより時系列を外挿します。この場合、各サンプルは前のサンプルの線形結合であると想定されます。このモデルを既存の時系列に適合させた後、定常(?)パワースペクトルを維持しながら、前方に実行してさらに値を推定できます。

lpc関数を使用してLPC係数を推定するMatlabの小さな例を次に示します。

N = 150;    % Order of LPC auto-regressive model
P = 500;    % Number of samples in the extrapolated time series
M = 150;    % Point at which to start predicting

t = 1:P;

x = 5*sin(t/3.7+.3)+3*sin(t/1.3+.1)+2*sin(t/34.7+.7); %This is the measured signal

a = lpc(x, N);

y = zeros(1, P);

% fill in the known part of the time series
y(1:M) = x(1:M);

% in reality, you would use `filter` instead of the for-loop
for ii=(M+1):P      
    y(ii) = -sum(a(2:end) .* y((ii-1):-1:(ii-N)));
end

plot(t, x, t, y);
l = line(M*[1 1], get(gca, 'ylim'));
set(l, 'color', [0,0,0]);
legend('actual signal', 'extrapolated signal', 'start of extrapolation');

もちろん、実際のコードではfilter、LPC係数aをIIRフィルターとして使用し、既知の時系列値をフィルター状態にプリロードすることにより、外挿の実装に使用します。このようなもの:

% Run the initial timeseries through the filter to get the filter state 
[~, zf] = filter(-[0 a(2:end)], 1, x(1:M));     

% Now use the filter as an IIR to extrapolate
y((M+1):P) = filter([0 0], -a, zeros(1, P-M), zf); 

出力は次のとおりです。

LPCの例

それは合理的な仕事をしますが、何らかの理由で予測は時間とともに消えます。

私は実際にはARモデルについてあまり知りませんし、またもっと知りたいと思っています。

-

編集:@chinaと@Emreは正しいです、BurgメソッドはLPCよりもはるかにうまく機能するようです。上記のコードでに変更lpcするだけでarburg、次の結果が得られます。

バーグ法を使用した外挿

コードはこちらから入手できます:https : //gist.github.com/2843661


Hz=bz/az

@Emre外挿を改善する方法はありますか?
-nibot

@chinnuが言うように、簡単な方法は出力を入力にフィードすることです。
エムレ

2
さて、MATLABを起動させました:Pこの問題は、異なるAR推定アルゴリズムを使用することで回避できます。単純に置き換えるa=lpc(x,N)ことでa=arburg(x,N)。(乾燥)のためのARアルゴリズムに関する議論が見なぜユール・ウォーカー万一の自己回帰モデルには使用しない
エムレ

1
これは明らかに少し遅いですが、セットアップに問題があります。モデル係数を推定するときに、xP測定値)からlpc(またはarburg)までの完全な時系列を提供します。元の質問ごとの外挿では、実際にはこの推定値を最初のM測定値のみに基づいてください。提供するタイムポイントが少ないと、外挿は劣りますが、それでも十分に機能します。
クリスC

6

1次元の「外挿」は、BURGの方法を使用してLP係数を推定することにより、非常に簡単です。LP係数が利用可能になると、フィルターを適用することで時間サンプルを簡単に計算できます。Burgで予測されるサンプルは、入力タイムセグメントの次のタイムサンプルです。


6

信号の周波数成分が少ないことを完全に確信している場合、MUSICアルゴリズムを試して、信号に含まれる周波数を見つけ、そこから作業を試みることができます。これが完全に機能するようにできるかどうかは完全にはわかりません。

さらに、データは完全に決定的であるため、何らかの非線形予測子を作成し、既存のデータセットを使用してトレーニングし、残りを推定することができます。

一般に、これは外挿問題です。価格のフーリエ外挿のようなものをグーグルにしたいかもしれません。


(数年後)いくつかの周波数成分を見つけるための別のアルゴリズムは、ハーモニックインバージョンです。
デニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.