Matlab:卷积和反卷积结果很奇怪

时间:2017-10-26 02:21:15

标签: matlab signal-processing convolution estimation deconvolution

数据x输入到自动识别模型(AR)模型。 AR模型的输出在SNR = 30 dB时被加性高斯白噪声破坏。观察结果用noisy_y表示。

让我们对AR模型进行近似估计h_hat(这些是从最小二乘估计得到的)。我想看看从h_hat解卷积获得的输入与已知x的测量结果有多接近。

  • 我的困惑是用于解卷积的变量 - 清除ynoisy y

解卷积后,我应该x_hat。我不确定执行反卷积的正确方法是使用noisy_y还是在添加噪音之前使用y。我使用了以下代码。

  • 有人可以帮助您绘制xx_hat的正确方法。

以下是x vs x_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 个答案:

答案 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

xx_hat的情节如下:

enter image description here