Matlab:卷积和反卷积结果很奇怪
Matlab : Convolution and deconvolution results weird
数据 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');
第一个问题是您的 AR 模型的系数 h
对应于一个 不稳定的 系统,因为它的一个极点位于单位圆之外:
>> abs(roots(h))
ans =
1.00814
0.84314
在给定发散输入序列的情况下,参数估计技术很可能无法收敛。事实上,查看所述 hat_h = [1 0.133 0.653]
很明显,参数估计没有收敛到实际系数附近的任何地方。在您的具体情况下,您没有提供说明如何获得 hat_h
的代码(除了指定它是 "obtained from Least Squares estimation"),因此无法进一步评论您的估计出了什么问题。
也就是说,standard formulation of Least Mean Squares (LMS) filters is given for an MA model. A common method for AR parameter estimation is to solve the 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
的情节看起来像:
数据 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');
第一个问题是您的 AR 模型的系数 h
对应于一个 不稳定的 系统,因为它的一个极点位于单位圆之外:
>> abs(roots(h))
ans =
1.00814
0.84314
在给定发散输入序列的情况下,参数估计技术很可能无法收敛。事实上,查看所述 hat_h = [1 0.133 0.653]
很明显,参数估计没有收敛到实际系数附近的任何地方。在您的具体情况下,您没有提供说明如何获得 hat_h
的代码(除了指定它是 "obtained from Least Squares estimation"),因此无法进一步评论您的估计出了什么问题。
也就是说,standard formulation of Least Mean Squares (LMS) filters is given for an MA model. A common method for AR parameter estimation is to solve the 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
的情节看起来像: