用C语言编程实现高斯白噪声,可以应用于各种软件仿真等。

今天编了一个用C语言实现高斯白噪声的程序,一方面自己的项目要用,另一方面可以开源的,希望可以给大家带来方便。请大家使用时也注明是baiguangyu001 白栎旸写的,这样我就满足了,呵呵。

做出来的序列*n,其方差比预先规定的要小10的-2次方量级,但是总体来说是比较准确的。可以通过改变量化精度Stride来增加概率估计的准确性。

/* 本程序用于产生SNR=db(dB)的均值为0的白噪声序列,编写人:白栎旸,baiguangyu001 */

/* db是信噪比, length是n的长度,n是产生出的白噪声 */

# include

# include

# define PI (3.14)

# define Stride (0.005)

short interleaver[length] = {...........};

注:interleaver是个交织器,长度与参数length一致就行,里面是乱序排列,这个在matlab里用randperm实现就行。

例如:short interleaver[10] = {7,1,9,6,3,2,5,8,4,0};

void awgn(float db, int length, float *n)

{

float pdf[10000] = {0};

float *amp;

float delta=0, amplitude = 0, sum = 0, temp1=0, temp2=0;

int *num;

int counter, counter1, counter2, counter3;

int half_length;

delta = 1 / ( 2 * pow(10,0.1*db) ); // 计算噪声功率

counter = 0; // 通过概率密度计算幅度集合和对应的概率密度

while( sum < (0.5/Stride) )

{

pdf[counter] = 1/sqrt(2*PI*delta)*exp(-0.5*pow(amplitude,2)/delta);

sum += pdf[counter];

amplitude += Stride;

counter++;

} // 最后得到的counter是幅度集合的长度

num = (int *)calloc(counter,sizeof(int)); // num每个幅度在序列中出现的次数,幅度放在amp中

amp = (float *)calloc(counter,sizeof(float));

amplitude = 0;

sum = 0;

temp1 = length*Stride;

temp2 = 0;

for(counter1=0;counter1

{

temp2 = temp1*pdf[counter1];

if( (int)(temp2+0.5)>(int)temp2 )

*(num+counter1) = (int)(temp2+1);

else

*(num+counter1) = (int)temp2;

sum += *(num+counter1);

*(amp+counter1)=amplitude;

amplitude += Stride;

}

temp1 = 0;

half_length = length>>1;

if(sum

{

temp1 = half_length-sum;

for(counter1=0;counter1

(*(num+counter-1-counter1))++;

}

else if(sum>half_length)

{

temp1 = sum-half_length;

*num -= temp1;

}

counter3 = 0;

for(counter1=0;counter1

{

for(counter2=0;counter2

{

*(n+counter3) = *(amp+counter1);

*(n+length-1-counter3) = -*(amp+counter1);

counter3++;

}

}

for(counter1=0;counter1

{

temp1 = *(n+counter1);

*(n+counter1) = *(n+interleaver[counter1]);

*(n+interleaver[co

c语言 白噪声,高斯白噪声 C语言实现相关推荐

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

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

  2. 高斯噪声/白噪声/高斯白噪声的区别

    这几个概念的区别和联系:(转自:研学论坛 ) 白噪声,就是说功率谱为一常数:也就是说,其协方差函数在delay=0时不为0,在delay不等于0时值为零: 换句话说,样本点互不相关.(条件:零均值.) ...

  3. 白噪声 java_白噪声 高斯白噪声

    使用2D矢量场的 LIC(line integral convolution) 算法时,需要使用 白噪声图片 作为输入.查阅了相关资料.整理如下: 1. 白噪声的定义 白光是所有颜色的光的叠加而成,不 ...

  4. python 高斯白噪声-python高斯白噪声

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声时间序列的例子在本节中,我们将使用python创建一个高斯白噪声序 ...

  5. C语言利用瑞丽分布产生高斯白噪声

    为什么80%的码农都做不了架构师?>>>    #include<windows.h> #include<stdio.h> #include<time. ...

  6. 高斯白噪声及matlab语言,matlab 给信号加高斯白噪声

    满意答案 wkchen1221 推荐于 2017.09.13 采纳率:47%    等级:11 已帮助:10513人 最低0.27元开通文库会员,查看完整内容> 原发布者:854076811 M ...

  7. 时间序列R语言操作2——白噪声和随机游走模型

    文章目录 一.白噪声 1.白噪声是什么? 2.白噪声的性质 3.样本自相关函数 4.白噪声检验 二.随机游走模型 1.简单随机游走序列 2.R语言 3.实例说明 1.醉汉回家 2.久赌必输 一.白噪声 ...

  8. 深入理解awgn函数如何向信号中添加高斯白噪声

    引言 在数值模拟应用中,经常在模拟信号中添加噪声数据,分析不同模型的信号解析能力.博文使用MATLAB中提供的awgnawgn函数向信号XX添加高斯白噪声,但从实现原理上分析了awgnawgn的实现过 ...

  9. python 高斯白噪声-python白噪声

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声是时间序列预测中的一个重要概念. 如果一个时间序列是白噪声,它是一 ...

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

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

最新文章

  1. 高性能的JavaScript--加载和执行
  2. 标题: Debian 下 VirtualBox 的桥接、USB 设置 ── 迷你怎么做 [转自sir]
  3. STM32系统滴答定时器(systick)应用
  4. 用宏定义实现函数值互换
  5. 掌握 Angular2 的服务 (service)
  6. this.counter$ = store.select(fromExample.getCounterCounter)之后马上subscribe
  7. 如何在CRM WebClient UI里使用HANA Live Report
  8. 前端学习(41):背景实现视觉差效果
  9. 打印多项式的那些坑(洛谷P1067题题解,Java语言描述)
  10. iOS内存泄漏的常见情况
  11. 2017.3.31 洞穴勘测 思考记录
  12. Atlassian JIRA 插件开发之二 安装和创建项目
  13. pandas之map(), apply()和applymap()
  14. android sqlitelog,如何解决Sqlitelog(13)语句中止在PhoneGap中的68错误android
  15. Python 多线程基本步骤
  16. 大数据的IT分析工具
  17. iPhone14 /ios16不能使用蜂窝网络(浏览器提示“未激活蜂窝数据网”)
  18. 电路模型和电路定律(Ⅲ)
  19. mysql高级笔记_MySQL高级学习笔记
  20. 第一次有人把5G讲得这么简单明了!

热门文章

  1. 公司网站应该外包SEO公司还是自己去做?
  2. 日立电梯举办2018“新思维 新动能”创新分享汇
  3. 世界品牌新500强揭晓 中国移动央视海尔入前百名
  4. 机器学习相关职位走向
  5. 唯样商城:常见电阻种类
  6. R语言使用cor.test函数检验两个数值向量之间的相关性系数是否具有统计显著性、对相关性系数进行显著性检验、基于pearson相关性检验
  7. C语言Matrix编程题——[Recursion]D. Liang 8.2 Fibonacci number
  8. sql 脚本 昨天的日期获取,今天的前一天的数据获取, 前两个月的今天
  9. IIS网站发布详细流程
  10. oracle kup04040,ORA-20011: Approximate NDV failed: ORA-29913: 执行 ODCIEXTTABLEOPE