python噪声函数 python数据噪声处理

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

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

创新互联专注于企业营销型网站、网站重做改版、友谊网站定制设计、自适应品牌网站建设、H5网站设计商城建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为友谊等各大城市提供网站开发制作服务。

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

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

在时域内有

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

则有

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

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

输入信号经过系统函数后

时域上

频域上

若存在加性噪声则为

时域上

频域上

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

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

click me!

python里的问题 ,pywt.dwt(signal,'db1','sym')这个函数

噪声能获取吗?好吧。你可以试试减一减。不过你的测试用例不太对。 尽量用有规律的数据去做。

比如你可以做一个正弦函数,再人为的加上一点点扰动。再做小波变换看看。另外数据要多些。太短的数据看不出效果来。

至于变换后是两个4,我想等你数据弄多些就明白了。 数据多些,就容易做图。你把变换后的数据变成图形,画出来。可以用EXCEL来画。

这样一对比就明白变换后的两个4数组是什么数据。 然后你就可以针对性的处理。取得噪声也是可以的。

通常来讲噪声是没有规律的。 但是不排除它是另外一种规律迭加上去的。 试试看。

python中的噪声是什么意思

白噪声是时间序列预测中的一个重要概念。如果一个时间序列是白噪声,它是一个随机数序列,不能预测。如果预测误差不是白噪声,它暗示了预测模型仍有改进空间。

什么是白噪声时间序列?

时间序列可能是白噪声。时间序列如果变量是独立的且恒等分布的均值为0,那么它是白噪声。这意味着所有变量具有相同的方差 (sigma^2),并且每个值与该系列中的所有其他值具有零相关。

如果序列中的变量被高斯分布绘制,则该系列称为高斯白噪声。

为什么这么重要?

白噪声是时间序列分析和预测中的一个重要的概念。

重要的两个主要原因为:

1.可预测性:如果你的时间序列是白噪声,那么根据定义它是随机的。你无法对它合理的建模并进行预测。

2.模型诊断:时间序列上一系列误差的预测模型最好是白噪声。

模型诊断是时间序列预测的重要领域。

时间序列数据在潜在的因素产生的信号上被预测,它包含一些白噪声成分。

例如:

y(t)= signal(t)+ noise(t)

通过时间序列预测模型进行预测,可以对其进行收集和分析。在理想情况下,预测误差应该是白噪声。

当预测误差为白噪声时,意味着时间序列中的所有信号已全部被模型利用进行预测。剩下的就是无法建模的随机波动。

模型预测的信号不是白噪声则表明可以进一步对预测模型改进。

你的时间序列白噪音吗?

你的时间序列如果符合下面条件则不是白噪声:

你的序列均值为零吗?

方差随时间变化吗?

值与延迟值相关吗?

你可以用一些工具来检查你的时间序列是否为白噪音:

创建一个折线图。检查总体特征,如变化的平均值,方差或延迟变量之间的明显关系。

计算汇总统计。对照序列中有意义的连续块的均值和方差,检查整个序列的均值和方差(如年、月、日)。

创建一个自相关的图。检查延迟变量之间的总体相关性。

白噪声时间序列的例子

在本节中,我们将使用Python创建一个高斯白噪声序列并做一些检查。它有助于在实践中创建和评估白噪声时间序列。它将提供参考框架和示例图并且使用和比较自己的时间序列项目的统计测试,以检查它们是否为白噪声

首先,我们可以使用随机模块的gauss()函数创建一个1,000个随机高斯变量的列表。

我们将从高斯分布提取变量:平均值(mu)0.0和标准偏差(sigma)1.0。

一旦创建,为方便起见,我们可以在Pandas序列中打包这个列表。

from randomimport gaussfrom randomimport seedfrom pandasimport Seriesfrom pandas.tools.plottingimport autocorrelation_plot

# seed random number generatorseed(1)# create white noise series

series= [gauss(0.0,1.0)for iin range(1000)]series= Series(series)

接下来,我们可以计算和打印一些汇总统计数据,包含序列的平均值和标准偏差。

# summary statsprint(series.describe())

鉴于我们在绘制随机数时定义了平均值和标准偏差,所以应该不会有意外。

count   1000.000000mean      -0.013222std        1.003685min        -2.96121425%        -0.68419250%        -0.01093475%         0.703915max         2.737260

我们可以看到平均值接近0.0,标准偏差接近1.0。考虑到样本较小预测会有些误差。

如果我们有更多的数据,将序列分成两半计算和比较每一半的汇总统计可能会更有趣。我们认为每个子系列的平均值和标准差都会相似。

现在我们可以创建一些序列的线条图。

# line plot

series.plot()pyplot.show()

我们可以看到,这个序列似乎是随机的。

我们还可以创建直方图,并确认分布是高斯分布。

# histogram plot

series.hist()pyplot.show()

事实上,直方图显示了典型的钟形曲线。

最后,我们可以创建一个自相关图并检查延迟变量的所有自相关。

# autocorrelationautocorrelation_plot(series)pyplot.show()

自相关图没有显示任何显著的自相关特征。在峰值时可信度达在95%和99%,但这只是统计的偶然情况。

为了完整性,下面提供了完整的代码清单。

from randomimport gaussfrom randomimport seedfrom pandasimport Seriesfrom pandas.tools.plottingimport autocorrelation_plotfrom matplotlibimport pyplot

# seed random number generatorseed(1)# create white noise series

series= [gauss(0.0,1.0)for iin range(1000)]series= Series(series)# summary statsprint(series.describe())# line plot

series.plot()pyplot.show()# histogram plot

series.hist()pyplot.show()# autocorrelationautocorrelation_plot(series)pyplot.show()

原文:网页链接


网站名称:python噪声函数 python数据噪声处理
文章起源:http://cdiso.cn/article/doejjgj.html

其他资讯