1

データxは、自己回帰モデル(AR)モデルに入力されます。 ARモデルの出力は、SNR = 30dBでAdditive White Gaussian Noiseで破損しています。観測結果はnoisy_yとなります。Matlab:畳み込みとデコンボリューションの結果が奇妙

ARモデルの近似推定値があります(これらは最小2乗推定から得られます)。私は、h_hatとデコンボリューションから得られた入力がどれくらい近くにあり、測定値が既知であるかを知りたいです。xです。

  • 混乱は、デコンボリューションに使用する変数です - クリーンyまたはnoisy y

デコンボリューションすると、x_hatになるはずです。デコンボリューションを行う正しい方法がnoisy_yを使用しているか、またはノイズを追加する前にyを使用しているかどうかはわかりません。私は次のコードを使用しました。

  • 誰かがxx_hatをプロットするための正しい方法は何かに助けてください。

以下は、xx_hatのプロットである。見ることができるように、これらは一致しません。私の理解は間違っていますか?助けてください。

image

コードである:

clear all 
    N = 200; %number of data points 
    a1=0.1650; 
    b1=-0.850; 
    h = [1 a1 b1]; %true coefficients 

    x = rand(1,N); 
    %%AR model 
    y = filter(1,h,x); %transmitted signal through AR channel 
    noisy_y = awgn(y,30,'measured'); 
    hat_h= [1 0.133 0.653]; 
    x_hat = filter(hat_h,1,noisy_y); %deconvolution 
    plot(1:50,x(1:50),'b'); 
    hold on; 
    plot(1:50,x_hat(1:50),'-.rd'); 

答えて

1

最初の問題は、その極の一方が単位円の外側に位置しているので、あなたのARモデルの係数h不安定システムに対応するようです:

>> abs(roots(h)) 
ans = 

    1.00814 
    0.84314 

パラメータ推定手法は、発散する入力シーケンスがあるため、収束しない可能性があります。確かに、述べられたhat_h = [1 0.133 0.653]を見ると、パラメータ推定値が実際の係数の近くに収束していないことは明らかです。特定のケースでは、hat_hの取得方法を示すコード(「最小2乗推定から得た」と指定したものを除く)を提供していないため、推定に何が間違っているかについてさらにコメントすることはできません。

つまり、standard formulation of Least Mean Squares (LMS) filtersはMAモデルに指定されています。

h = [1 -a1 -b1]; 

x = rand(1,N); 
%%AR model 
y = filter(1,h,x); %transmitted signal through AR channel 
noisy_y = awgn(y,30,'measured'); 
hat_h = aryule(noisy_y - mean(noisy_y), length(h)-1); 
x_hat = filter(hat_h,1,noisy_y); %deconvolution 

xx_hatのプロット:我々はによって定義された安定システムで、この推定法を使用した場合

hat_h = aryule(noisy_y - mean(noisy_y), length(h)-1); 

:ARパラメータ推定のための一般的な方法は、Yule-Walker equationsを解決することです次のようになります。

enter image description here

+0

ありがとうございますあなたの答え。私は4つの疑問を持っています。 (1)私は不安定な問題を認識していませんでした。 'h = [1、0.195、-0。95]; 'それで' abs(root(h))= 1.0770、 0.8820'これも不安定ですか?最初の値が1.0770> 1ならば、ルートが単位円の外にあると言いますか?(2)エラー計算: 'h_hat'と' x_hat'を使ってARモデルをシミュレートして 'y_hat'を生成します。推定値は 'noisy_y'を使って得られるので、平均二乗誤差は' y'と 'y_hat'の間で計算されるべきですか、' noisy_y'と 'y_hat'でしょうか? – SKM

+0

(3)システムを見積もり、 'y_hat'を計算するためにデータシーケンスを訓練とテストに細分するべきですか? (4)入力パラメータとシステムパラメータが不明な場合、入力のパイロットシンボルの形で所望の信号/トレーニングシーケンスがありません。この場合、推定と 'y_hat'の計算はシーケンス全体を使って行われます(この質問に示されているように)? – SKM

+1

(1) 'h = [1,0.195、-0.95]'も不安定です。長い 'x'シーケンスをプロットすると、特に明らかです。 'abs(roots(h))'の値が1より大きい場合、ルートは単位円の外にあります。 (2)おそらくあなたが比較で達成しようとしているものを正確に公開する別の質問としては良いでしょうが、おそらく同じようなものを比較するべきです(例えば、 'y'は' y_hat'と 'noisy_y'を' noisy_y_hat' ) – SleuthEye

関連する問題