c语言 白噪声,高斯白噪声 C语言实现
用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语言实现相关推荐
- c语言产生高斯白噪声函数,含有高斯白噪声的正弦组合信号的产生
一.功能 产生含有高斯白噪声的正弦组合信号. 二.方法简介 含有高斯白噪声的\(M\)个正弦信号的组合为 \[ x(n)=\sum_{i=1}^{M}A_{i}sin(2\pi f_{i}\Delta ...
- 高斯噪声/白噪声/高斯白噪声的区别
这几个概念的区别和联系:(转自:研学论坛 ) 白噪声,就是说功率谱为一常数:也就是说,其协方差函数在delay=0时不为0,在delay不等于0时值为零: 换句话说,样本点互不相关.(条件:零均值.) ...
- 白噪声 java_白噪声 高斯白噪声
使用2D矢量场的 LIC(line integral convolution) 算法时,需要使用 白噪声图片 作为输入.查阅了相关资料.整理如下: 1. 白噪声的定义 白光是所有颜色的光的叠加而成,不 ...
- python 高斯白噪声-python高斯白噪声
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声时间序列的例子在本节中,我们将使用python创建一个高斯白噪声序 ...
- C语言利用瑞丽分布产生高斯白噪声
为什么80%的码农都做不了架构师?>>> #include<windows.h> #include<stdio.h> #include<time. ...
- 高斯白噪声及matlab语言,matlab 给信号加高斯白噪声
满意答案 wkchen1221 推荐于 2017.09.13 采纳率:47% 等级:11 已帮助:10513人 最低0.27元开通文库会员,查看完整内容> 原发布者:854076811 M ...
- 时间序列R语言操作2——白噪声和随机游走模型
文章目录 一.白噪声 1.白噪声是什么? 2.白噪声的性质 3.样本自相关函数 4.白噪声检验 二.随机游走模型 1.简单随机游走序列 2.R语言 3.实例说明 1.醉汉回家 2.久赌必输 一.白噪声 ...
- 深入理解awgn函数如何向信号中添加高斯白噪声
引言 在数值模拟应用中,经常在模拟信号中添加噪声数据,分析不同模型的信号解析能力.博文使用MATLAB中提供的awgnawgn函数向信号XX添加高斯白噪声,但从实现原理上分析了awgnawgn的实现过 ...
- python 高斯白噪声-python白噪声
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声是时间序列预测中的一个重要概念. 如果一个时间序列是白噪声,它是一 ...
- MATLIB用Box-Muller变换产生高斯白噪声
陈拓 2020/12/10-2020/12/11 在<MATLIB产生高斯白噪声并生成C语言代码>https://zhuanlan.zhihu.com/p/335809620 一文中我们用 ...
最新文章
- 高性能的JavaScript--加载和执行
- 标题: Debian 下 VirtualBox 的桥接、USB 设置 ── 迷你怎么做 [转自sir]
- STM32系统滴答定时器(systick)应用
- 用宏定义实现函数值互换
- 掌握 Angular2 的服务 (service)
- this.counter$ = store.select(fromExample.getCounterCounter)之后马上subscribe
- 如何在CRM WebClient UI里使用HANA Live Report
- 前端学习(41):背景实现视觉差效果
- 打印多项式的那些坑(洛谷P1067题题解,Java语言描述)
- iOS内存泄漏的常见情况
- 2017.3.31 洞穴勘测 思考记录
- Atlassian JIRA 插件开发之二 安装和创建项目
- pandas之map(), apply()和applymap()
- android sqlitelog,如何解决Sqlitelog(13)语句中止在PhoneGap中的68错误android
- Python 多线程基本步骤
- 大数据的IT分析工具
- iPhone14 /ios16不能使用蜂窝网络(浏览器提示“未激活蜂窝数据网”)
- 电路模型和电路定律(Ⅲ)
- mysql高级笔记_MySQL高级学习笔记
- 第一次有人把5G讲得这么简单明了!
热门文章
- 公司网站应该外包SEO公司还是自己去做?
- 日立电梯举办2018“新思维 新动能”创新分享汇
- 世界品牌新500强揭晓 中国移动央视海尔入前百名
- 机器学习相关职位走向
- 唯样商城:常见电阻种类
- R语言使用cor.test函数检验两个数值向量之间的相关性系数是否具有统计显著性、对相关性系数进行显著性检验、基于pearson相关性检验
- C语言Matrix编程题——[Recursion]D. Liang 8.2 Fibonacci number
- sql 脚本 昨天的日期获取,今天的前一天的数据获取, 前两个月的今天
- IIS网站发布详细流程
- oracle kup04040,ORA-20011: Approximate NDV failed: ORA-29913: 执行 ODCIEXTTABLEOPE