【发布时间】:2015-09-09 01:29:29
【问题描述】:
我正在尝试在 Matlab 中设计一个维纳滤波器来解决反卷积问题,但我遇到了很多问题。我有一个方差为 1.2 的高斯白噪声过程和一个长度为 2 的脉冲响应。它的值是 g(0) = 5 和 g(1) = 4。稍后在此过程中,我尝试确定 Rxx(m)。为此,我需要计算 g(m)*g(-m)(卷积),并建议在 Matlab 中使用 xcorr 函数,但我的结果没有意义。任何人都可以帮助我使用这个 xcorr 函数并就如何使用这个脉冲响应提供建议吗?我曾尝试使用 g 的傅立叶变换,但这没有任何帮助。
【问题讨论】:
-
Rxx(0) 在中间 (
ceil(M/2)) -
请提供您已经尝试过的代码。任何我们需要有关上下文的更多详细信息。与输入信号一样,脉冲响应的用途以及计算 conv(m,-m) 的位置/原因。
-
我没有输入信号,只是它是一个方差为 1.2 的白噪声过程,它通过 FIR 滤波器 g(n)。知道这是一个 FIR 滤波器,差分方程变为 r(n) = sum g(k) y(n-k) 。但是信号 r(n) 受到方差为 0.2 的噪声过程 d(n) 的污染。为此,我有 x(n) = r(n) + d(n)。
-
这个信号是我想用维纳滤波器处理的,以便保留 y(n) 的近似值。为了计算这些,我需要 x(n) 的自相关,这是 Rxx = 1.2 g(m) * g(-m) + 0.2 d(m)。现在我还没有太多代码,因为这是我挣扎的地方:我应该以什么方式实现 g(m) 和 g(-m) 并执行卷积。乘以傅里叶变换似乎不起作用,有人建议我使用 xcorr 函数,但我不明白这究竟是如何工作的,Matlab 的解释也没有多大帮助。
-
我要补充一点,我对 matlab 没有经验
标签: matlab filtering convolution