使用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_白噪声 高斯白噪声相关推荐

  1. matlab高斯白噪声功率,自定义高斯白噪声功率和带宽

    1.目标 在通信.雷达和计量等领域,在仿真.测试和计量过程中,常常需要使用信号源产生高斯白噪声信号,而且,重要的是,准确定义的噪声功率和带宽. 本文目的是产生用户自定义功率和带宽的高斯白噪声,方法是利 ...

  2. c语言产生高斯白噪声函数,含有高斯白噪声的正弦组合信号的产生

    一.功能 产生含有高斯白噪声的正弦组合信号. 二.方法简介 含有高斯白噪声的\(M\)个正弦信号的组合为 \[ x(n)=\sum_{i=1}^{M}A_{i}sin(2\pi f_{i}\Delta ...

  3. 高斯噪声、高斯白噪声解析

    如何用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 ...

  4. matlab高斯白噪声功率谱密度,matlab-正弦波-高斯白噪声-均匀白噪声-功率谱密度-自相关函数.doc...

    现代通信原理 作业一 利用matlab完成: 产生正弦波信号.均匀白噪声以及高斯白噪声并分别将两种噪声叠加到正弦波信号上,绘出波形. 分别求取均匀白噪声序列和高斯白噪声序列的自相关及功率谱密度,绘出波 ...

  5. 高斯噪声和高斯白噪声相关介绍

    高斯噪声是一种随机噪声,在任选瞬时中任取n个,其值按n个变数的高斯概率定律分布. 注: 1,高斯噪声完全由其时变平均值和两瞬时的协方差函数来确定,若噪声为平稳的,则平均值与时间无关,而协方差函数则变成 ...

  6. MATLIB用Box-Muller变换产生高斯白噪声

    陈拓 2020/12/10-2020/12/11 在<MATLIB产生高斯白噪声并生成C语言代码>https://zhuanlan.zhihu.com/p/335809620 一文中我们用 ...

  7. 高斯噪声、高斯白噪声、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 ...

  8. 其他算法-高斯白噪声

    定义 首先,明白一阶矩是随机变量的期望,二阶矩是随机变量平方的期望,(二阶中心距是随机变量与期望差的平方的期望,即方差): 自相关系数 功率谱 横坐标为频率,纵坐标为功率: 白噪声 信号的功率谱等于常 ...

  9. 高斯白噪声的Verilog实现

    本文章主要讨论高斯白噪声的FPGA实现.简单的方法可以采用在Matlab中产生服从一定均值和方差的I.Q两路噪声信号.然后将两组数据存在FPGA中进行回放,以此来产生高斯白噪声.这种方法优点是产生方法 ...

最新文章

  1. IDEA热部署基于maven的web项目
  2. Redis集群管理(二)
  3. python3基础题目,Python3.x 基础练习题100例(91-100)
  4. javascript初级代码块
  5. mysql性能优化金字塔法则pdf_MySQL索引优化2-优化法则
  6. getElementById() getElementsByName() getElementsByTagName()
  7. hdu 1247 map
  8. linux下好用的超级终端,【整理】Windows下超级终端的最佳替代品,免费的串口终端工具Putty...
  9. httpclient下载图片或者其他文件
  10. 阿里巴巴编码规范认证之步骤详解
  11. 解秘java中native方法如何实现:手把手带你实现java native方法
  12. python处理word文档 查找文字 加下划线_你能用Pythondocx在同一段落的某一部分加下划线吗?...
  13. android q mix3,小米MIX3成首款适配Android Q的5G手机
  14. puzzle(1036)数邻、多米诺骨牌
  15. android 窗口圆角
  16. 院士李德毅:大数据认知(演讲全文)
  17. AjaxPro.Utility.RegisterTypeForAjax()的作用 AjaxPro第三方控件
  18. 在线计算机手册,1. 计算机应用基础学习手册.pdf
  19. pycharm安装与配置Pyqt5
  20. iphone一键转移_苹果手机如何一键转移数据 转移教程介绍

热门文章

  1. java正则表达式Patter和Matcher的使用
  2. 20180928 SQL SERVER 事务回滚
  3. python 知乎登录_python3模拟知乎登录
  4. C语言练习第4天---输出斐波那契数列(循环,数组,函数)
  5. ae合成设置快捷键_AE快捷键总结归纳,提升工作效率,离不开它
  6. 微信和支付宝H5扫码支付开发记录
  7. php 读取 eml,PHP 实现下载邮件功能,保存为eml格式
  8. Monocular Fisheye Camera Depth Estimation Using Sparse LiDAR Supervision
  9. Laya开发入门解析
  10. MindSpore:对image作normalize的目的是什么?