白噪声 java_白噪声 高斯白噪声
使用2D矢量场的 LIC(line integral convolution) 算法时,需要使用 白噪声图片 作为输入。查阅了相关资料。整理如下:
1. 白噪声的定义
白光是所有颜色的光的叠加而成,不同颜色的光本质区别是他们的频率不同(如 红光频率低、紫光频率高)。与白光类似,白噪声在功率谱密度上(若以频率为横轴,信号幅度的平方为功率(在纵轴上))分布为常值,即从高频到低频各种频率的噪声都有(从频域上考虑),也即每个时刻出现的噪声幅值都是随机的(从时域上考虑)。
2. 高斯白噪声的定义
曲线的形状由两个参数决定:均值 和方差
a. 均值公式:
。均值决定了曲线的对称中线;
b.方差公式:
。 方差决定曲线的胖瘦,即贴近中线的程度。
概率密度定义了信号出现的频率随幅值的变化情况,以信号幅值为横轴,以出现的频率为纵轴。因此,从概率密度角度来说,高斯白噪声的幅度服从高斯分布。
下面给出了图示说明:
(1) 白噪声
功率谱:(y轴表示噪声值,已归一化至【0,1】区间。) 概率谱:
(2) 高斯白噪声
功率谱:(未作归一化) 概率谱:
代码 1.1. 使用乘同余法 生成 白噪声
/**************************
用乘同余法产生均匀分布白噪声(一串随机序列)。算法及程序实现叙述如下。
1) 在函数之外设定随机种子,随机序列为sequence,长度 n
2) 取 M =2^35,x = (A*x)mod M;e[i]= x/M ; 循环n次,得到均匀分布白噪声序列e[].该伪随机数的循环周期为2^(35-2)。
3) 实际实现中,将 e[i]= x/M ; 替换为 取ei的 小数部分 再赋值给ei+1,循环n次,就得到均匀分布白噪声序列;
*************************/
void whiteNoise(vector &sequence,intn)
{int x =rand();int A = 3125;double M = pow(2.0f,35.0f);
sequence.resize(n);double seed =double(x/M);
sequence[0]= ( A * seed - int( A * seed ));//取小数部分
double average = 0,serror=0; //统计均值、方差
for (int i=1;i
{
sequence[i]=( A * sequence[i-1] - int( A * sequence[i-1] ));//取小数部分,获得均匀分布白噪声序列
average+=sequence[i];
}
average/=n;//得到均值
for(int i=0;i
{
serror+=(sequence[i]-average)*(sequence[i]-average);
}
serror/=n;//得到方差
counter1.resize(pieceNum);//用vecotr counter 进行概率统计,共分为 pieceNum 份 进行统计
int max=0;for(int i=0;i
{int index = sequence[i]/double(10.0f/pieceNum)+pieceNum/2;
counter1[index]++;if(counter1[index] >max)
max=counter1[index];
}for(int i=0;i
{
counter1[i]/=(double)max; //归一化
}
}
代码 1.2. 使用 迭代取中法 生成 白噪声
/*************************************
用迭代取中法产生均匀分布白噪声
***************************************/
void MakeWhiteNoise(vector &sequence,intn)
{
sequence.resize(n);for(int j = 0; j < n; j ++)
{int r =rand();
r= ( (r & 0xff) + ( (r & 0xff00) >> 8 ) ) & 0xff;//截取后8位
sequence[j] = (unsigned char) r/(double)0xff;//归一化
}
counter1.resize(pieceNum);//用vecotr counter 进行概率统计,共分为 pieceNum 份 进行统计
int max=0;for(int i=0;i
{int index = sequence[i]/double(10.0f/pieceNum)+pieceNum/2;
counter1[index]++;if(counter1[index] >max)
max=counter1[index];
}for(int i=0;i
{
counter1[i]/=(double)max; //归一化
}
}
代码 2.1. 使用公式生成 高斯白噪声
/*************************
先生成两个(0,1)间随机白噪声序列 sq1,sq2,再利用公式: c[i]=serror*(–2*log sq1[i])^0.5*cos(2*pi*sq2[i]) +average 循环n次
计算得到均值和方差可任意调整的白噪声序列。
*************************/
void guassWhiteNoise(vector &vdGuassSequence,int n,double average,doubleserror)
{//根据均值和方差得到调整后的白噪声序列
vectorsq1,sq2;
whiteNoise(sq1,n);//使用乘同余法
whiteNoise(sq2,n);/*MakeWhiteNoise(sq1,n); //或使用迭代取中法
MakeWhiteNoise(sq2,n);*/vdGuassSequence.resize(n);double average2 = 0,serror2=0;//均值、方差
for (int i=0;i
{if(sq1[i]!=0)
vdGuassSequence[i]= serror* sqrt((-2) *log(sq1[i])) * sin( 2*PI* sq2[i]) +average;elsevdGuassSequence[i]= serror* sqrt((-2) *log(0.0000001)) * sin( 2*PI* sq2[i]) +average;
average2+=vdGuassSequence[i];
}
average2/=n;//得到均值
for(int i=0;i
{
serror2+=(vdGuassSequence[i]-average2)*(vdGuassSequence[i]-average2);
}
serror2/=n;//得到方差
counter2.resize(pieceNum+1);//用vecotr counter2 进行概率统计,共分为 pieceNum 份 进行统计
int max=0;for(int i=0;i
{int index = vdGuassSequence[i]/double(20.0f/pieceNum)+pieceNum/2;
counter2[index]++;if(counter2[index] >max)
max=counter2[index];
}for(int i=0;i
{
counter2[i]/=(double)max; //归一化
}
}
白噪声 java_白噪声 高斯白噪声相关推荐
- matlab高斯白噪声功率,自定义高斯白噪声功率和带宽
1.目标 在通信.雷达和计量等领域,在仿真.测试和计量过程中,常常需要使用信号源产生高斯白噪声信号,而且,重要的是,准确定义的噪声功率和带宽. 本文目的是产生用户自定义功率和带宽的高斯白噪声,方法是利 ...
- c语言产生高斯白噪声函数,含有高斯白噪声的正弦组合信号的产生
一.功能 产生含有高斯白噪声的正弦组合信号. 二.方法简介 含有高斯白噪声的\(M\)个正弦信号的组合为 \[ x(n)=\sum_{i=1}^{M}A_{i}sin(2\pi f_{i}\Delta ...
- 高斯噪声、高斯白噪声解析
如何用matlab 产生 均值为0,方差为5的高斯噪声 2011-07-15 19:36 y=randn(1,2500); y=y/std(y); y=y-mean(y); a=0; b=5; y=a ...
- matlab高斯白噪声功率谱密度,matlab-正弦波-高斯白噪声-均匀白噪声-功率谱密度-自相关函数.doc...
现代通信原理 作业一 利用matlab完成: 产生正弦波信号.均匀白噪声以及高斯白噪声并分别将两种噪声叠加到正弦波信号上,绘出波形. 分别求取均匀白噪声序列和高斯白噪声序列的自相关及功率谱密度,绘出波 ...
- 高斯噪声和高斯白噪声相关介绍
高斯噪声是一种随机噪声,在任选瞬时中任取n个,其值按n个变数的高斯概率定律分布. 注: 1,高斯噪声完全由其时变平均值和两瞬时的协方差函数来确定,若噪声为平稳的,则平均值与时间无关,而协方差函数则变成 ...
- MATLIB用Box-Muller变换产生高斯白噪声
陈拓 2020/12/10-2020/12/11 在<MATLIB产生高斯白噪声并生成C语言代码>https://zhuanlan.zhihu.com/p/335809620 一文中我们用 ...
- 高斯噪声、高斯白噪声、SNR、噪声方差
如何用matlab 产生 均值为0,方差为5的高斯噪声 2011-07-15 19:36 y=randn(1,2500); y=y/std(y); y=y-mean(y); a=0; b=5; y=a ...
- 其他算法-高斯白噪声
定义 首先,明白一阶矩是随机变量的期望,二阶矩是随机变量平方的期望,(二阶中心距是随机变量与期望差的平方的期望,即方差): 自相关系数 功率谱 横坐标为频率,纵坐标为功率: 白噪声 信号的功率谱等于常 ...
- 高斯白噪声的Verilog实现
本文章主要讨论高斯白噪声的FPGA实现.简单的方法可以采用在Matlab中产生服从一定均值和方差的I.Q两路噪声信号.然后将两组数据存在FPGA中进行回放,以此来产生高斯白噪声.这种方法优点是产生方法 ...
最新文章
- IDEA热部署基于maven的web项目
- Redis集群管理(二)
- python3基础题目,Python3.x 基础练习题100例(91-100)
- javascript初级代码块
- mysql性能优化金字塔法则pdf_MySQL索引优化2-优化法则
- getElementById() getElementsByName() getElementsByTagName()
- hdu 1247 map
- linux下好用的超级终端,【整理】Windows下超级终端的最佳替代品,免费的串口终端工具Putty...
- httpclient下载图片或者其他文件
- 阿里巴巴编码规范认证之步骤详解
- 解秘java中native方法如何实现:手把手带你实现java native方法
- python处理word文档 查找文字 加下划线_你能用Pythondocx在同一段落的某一部分加下划线吗?...
- android q mix3,小米MIX3成首款适配Android Q的5G手机
- puzzle(1036)数邻、多米诺骨牌
- android 窗口圆角
- 院士李德毅:大数据认知(演讲全文)
- AjaxPro.Utility.RegisterTypeForAjax()的作用 AjaxPro第三方控件
- 在线计算机手册,1. 计算机应用基础学习手册.pdf
- pycharm安装与配置Pyqt5
- iphone一键转移_苹果手机如何一键转移数据 转移教程介绍
热门文章
- java正则表达式Patter和Matcher的使用
- 20180928 SQL SERVER 事务回滚
- python 知乎登录_python3模拟知乎登录
- C语言练习第4天---输出斐波那契数列(循环,数组,函数)
- ae合成设置快捷键_AE快捷键总结归纳,提升工作效率,离不开它
- 微信和支付宝H5扫码支付开发记录
- php 读取 eml,PHP 实现下载邮件功能,保存为eml格式
- Monocular Fisheye Camera Depth Estimation Using Sparse LiDAR Supervision
- Laya开发入门解析
- MindSpore:对image作normalize的目的是什么?