加性高斯白噪声及维纳滤波的基本原理与Python实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加性高斯白噪声及维纳滤波的基本原理与Python实现相关的知识,希望对你有一定的参考价值。

参考技术A

加性高斯白噪声属于白噪声的一种,有如下两个特点:

random.gauss(mu, sigma) 其值即服从高斯分布,若想要是实现加性高斯白噪声,循环作加即可

实际上逆滤波是维纳滤波的一种理想情况,当不存在加性噪声时,维纳滤波与逆滤波等同。

在时域内有

根据时域卷积定理,我们知道 时域卷积等于频域乘积

则有

这意味着,当我们已知系统函数时,我们可以很简单的完成滤波。

理解了逆滤波的基本过程之后,实际上维纳滤波就不是太大问题了。实际上,逆滤波对于绝大多数情况滤波效果都不好,因为逆滤波是通过傅里叶变换将信号由时域转换到频域,再根据 时域卷积定理 ,在频域作除法。对于乘性干扰这当然是没问题的,甚至是完美的。而如果存在加性噪声,例如:加性高斯白噪声。逆滤波效果就不好了,某些情况下几乎无法完成滤波情况。

输入信号经过系统函数后
时域上

频域上

若存在加性噪声则为
时域上

频域上


于是,从上面对输入信号的估计表达式可以看出,多出了一项加性噪声的傅里叶变换与系统函数的比值。尤其当 相对于 很小时,滤波后的信号差距十分严重。

而我们又知道: 白噪声的白为噪声的功率谱为常数 ,即 为常数,于是,从直观上看,当 相对于 较大时,则 较小,上式第一项则较小,而第二项较大从而保持相对平稳。

click me!

加性高斯白噪声 AWGN

加性高斯白噪声 AWGN(Additive White Gaussian Noise) 是最基本的噪声与干扰模型。

加性噪声:叠加在信号上的一种噪声,通常记为n(t),而且无论有无信号,噪声n(t)都是始终存在的。因此通常称它为加性噪声或者加性干扰。

白噪声:噪声的功率谱密度在所有的频率上均为一常数,则称这样的噪声为白噪声。如果白噪声取值的概率分布服从高斯分布,则称这样的噪声为高斯白噪声。

 Matlab中实现加性高斯白噪声:

y = awgn(x,SNR)

在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

y = awgn(x,SNR,SIGPOWER)

如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为‘measured‘,则函数将在加入噪声之前测定信号强度。

y = awgn(x,SNR,SIGPOWER,STATE)

重置RANDN的状态。

y = awgn(…,POWERTYPE)

指定SNR和SIGPOWER的单位。POWERTYPE可以是‘dB‘或‘linear‘。如果POWERTYPE是‘dB‘,那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是‘linear‘,那么SNR作为比值来度量,而SIGPOWER以瓦特为单位

以上是关于加性高斯白噪声及维纳滤波的基本原理与Python实现的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab产生标准高斯噪声

高斯白噪声信道仿真

维纳滤波

python 写matlab中的加性高斯白噪声AWGN

在matlab中使用高斯滤波器进行图像去模糊,没有加性噪声

Opencv——图像添加椒盐噪声高斯滤波去除噪声原理及手写Python代码实现