数据x
输入到自动识别模型(AR)模型。 AR模型的输出在SNR = 30 dB时被加性高斯白噪声破坏。观察结果用noisy_y
表示。
让我们对AR模型进行近似估计h_hat
(这些是从最小二乘估计得到的)。我想看看从h_hat
解卷积获得的输入与已知x
的测量结果有多接近。
y
或noisy y
?解卷积后,我应该x_hat
。我不确定执行反卷积的正确方法是使用noisy_y
还是在添加噪音之前使用y
。我使用了以下代码。
x
和x_hat
的正确方法。以下是x
vs x_hat
的情节。可以看出,这些并不匹配。我明白错在哪里?请帮忙。
代码是:
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');
答案 0 :(得分:1)
第一个问题是AR模型的系数h
对应于不稳定系统,因为其中一个极点位于单位圆外:
>> abs(roots(h))
ans =
1.00814
0.84314
在给定不同的输入序列的情况下,参数估计技术很可能无法收敛。实际上,看看陈述的hat_h = [1 0.133 0.653]
,很明显参数估计并没有收敛到实际系数附近的任何地方。在您的具体情况下,您没有提供说明您如何获得hat_h
的代码(除了指定它是"从最小二乘估计获得"),因此不可能进一步评论您的估计出了什么问题。
也就是说,standard formulation of Least Mean Squares (LMS) filters给出了MA模型。 AR参数估计的常用方法是求解Yule-Walker equations:
hat_h = aryule(noisy_y - mean(noisy_y), length(h)-1);
如果我们将此估算方法与稳定系统一起使用,则由以下人员定义:
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
x
和x_hat
的情节如下: