白噪声 java_java – 你能以编程方式检测白噪声吗?

我已经在这个具体领域做了一些实际工作,我会建议(如果你有一点时间),试图只是一点点实验,然后诉诸fft’ing。 pcm流可以非常复杂和巧妙地解释(根据高质量滤波和重采样),但是对于许多目的也可以被实际处理为虚线的路径。

白噪声是线的不可预测的振动,这是永远不是相当连续的强度(均方根,绝对平均值..)声学内容是反复摆动和偶尔的惊喜(跳跃,飞跃):]

可以通过对pcm流的运行窗口执行快速计算来估计信号的非噪声状内容。

例如,噪声将强烈倾向于具有比非噪声更高的其导数的绝对积分值。我认为这是说这个的学术方式:

loop(n+1 to n.length)

{ sumd0+= abs(pcm[n]);

sumd1+= abs(pcm[n]-pcm[n-1]);

}

wNoiseRatio = ?0.8; //quite easily discovered, bit tricky to calculate.

if((sumd1/sumd0)

{ /*not like noise*/ }

此外,在〜16至〜30个白噪声样本上的运行绝对平均值将倾向于变化较小,在白噪声以上比声信号:

loop(n+24 to n.length-16)

{ runAbsAve1 += abs(pcm[n]) - abs(pcm[n-24]); }

loop(n+24+16 to n.length)

{ runAbsAve2 += abs(pcm[n]) - abs(pcm[n-24]); }

unusualDif= 5; //a factor. tighter values for longer measures.

if(abs(runAbsAve1-runAbsAve2)>(runAbsAve1+runAbsAve2)/(2*unusualDif))

{ /*not like noise*/ }

这涉及白噪声如何在足够大的跨度上趋于不零星以平均其熵。声学内容是零星的(局部的力量)和反复的(重复的力量)。

简单的测试对具有较低频率的声学内容做出反应,并且可以被高频率内容淹没。有简单的应用低通滤波器,这可以帮助(和毫无疑问的其他适应)。

此外,均方根可以除以平均绝对总和,提供另一个应该是白噪声特定的比率,虽然我不能现在是什么。该比率对于信号导数也将不同。

我认为这些是简单的公式签名的噪音。我相信还有更多..对不起不是更具体,它是模糊和不精确的建议,但是对fft的输出执行简单测试。为了更好的解释和更多的想法,或许可以检查统计和随机(?)测量的熵和随机性维基百科等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LibNoise分形噪声函数库的JAVA翻译版,个人开发,仅供参考。 包中包含: 异常模块: noise.Exception noise.ExceptionInvalidParam 无效的参数异常。 noise.ExceptionNoModule 无模块异常,无法检索到该源模块 noise.ExceptionOutOfMemory noise.ExceptionUnknown 模型模块: noise.model.Line 线 noise.model.Plane 平面 noise.model.Sphere 球体 noise.model.Cylinder 圆柱 发生器模块: noise.module.Perlin 培林噪声 noise.module.RidgedMulti 脊多重分形噪声 noise.module.Billow 巨浪 value = |perlin_value|*2-1.0; noise.module.Voronoi 细胞噪声,Voronoi图 noise.module.Const 常量 value = const; noise.module.Cylinders 圆柱 noise.module.Checkerboard 棋盘格 value = (floor(x) & 1 ^ floor(y) & 1 ^ floor(z) & 1) != 0 ? -1.0 : 1.0; noise.module.Spheres 球体 选择器模块: noise.module.Select 选择 noise.module.Blend 混合 value = ((1.0 - (modules[3].value+1)/2) * modules[0].value) + ((modules[3].value+1)/2 * modules[1].value); 修饰器模块: noise.module.Invert 倒置 value = -value; noise.module.Abs 绝对值 value = |value|; noise.module.Clamp 截取 value = (value < lowerBound ?lowerBound : value) or (value > upperBound ?upperBound : value);lowerBound:下截取值;upperBound:上截取值 noise.module.Curve 曲线 value = noise.module.Curve.ControlPoint 控制点 noise.module.ScaleBias 偏移缩放, value = value*scale+offset noise.module.Turbulence 湍流 value = modules[0].getValue(x+modules[1].value * power,y+modules[2].value * power,z+modules[3].value * power); noise.module.Exponent 指数 value = (pow(abs((value + 1.0) / 2.0), exponent) * 2.0 - 1.0); 组合模块: noise.module.Add 添加 value = modules[0].value+modules[1].value; noise.module.Max 最大值 value = max(value); noise.module.Min 最小值 value = min(value); noise.module.Multiply 乘法 value = modules[0].value * modules[1].value; noise.module.Power 权重 value = pow(modules[0].value , modules[1].value); 变压模块: noise.module.Displace 位移替换,扭曲 value = modules[0].getValue(x+modules[1].value,y+modules[2].value,z+modules[3].value); noise.module.RotatePoint 点旋转 noise.module.ScalePoint 点缩放,轴缩放 value = modules[0].getValue (x * xScale, y * yScale,z * zScale); noise.module.Terrace 露台,梯台 noise.module.TranslatePoint 位移变换 value = modules[0].getValue (x * xTranslation, y * yTranslation,z * zTranslation); 其他: noise.module.Cache 缓存 value = noise.module.Module 噪声模块基类 如果发现有要更改的地方,请发邮件给我,或者本人QQ:343179390,欢迎技术探讨

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值