c语言编程高斯白噪声信号,关于产生高斯白噪声

c语言编程高斯白噪声信号,关于产生高斯白噪声1 环境工具语言 c 语言作图 gnuplot2 高斯白噪声 1 为什么要产生高斯白噪声在分析一个系统的抗噪声性能或者是一种对信号的调制方式分析的时候 在模拟信号通过信道的时候 使用的是高斯白噪声来模拟信道中的噪声模型 由此 在固定信噪比下 可以分析不同调制手段最终解调后受干扰的程度好坏 通信系统中的噪声是热噪声 而白噪声是近似于白噪声的 当对白噪声取值的时候 我们发现它符合高斯分布 故而出

1. 环境工具

语言:c语言

作图:gnuplot

2. 高斯白噪声

[ 1] 为什么要产生高斯白噪声

在分析一个系统的抗噪声性能或者是一种对信号的调制方式分析的时候,在模拟信号通过信道的时候,使用的是高斯白噪声来模拟信道中的噪声模型,由此,在固定信噪比下,可以分析不同调制手段最终解调后受干扰的程度好坏,通信系统中的噪声是热噪声,而白噪声是近似于白噪声的,当对白噪声取值的时候,我们发现它符合高斯分布,故而出现了高斯白噪声,对于高斯白噪声,其频谱符合均匀分布。

[ 2] 如何产生高斯白噪声

对于离散时间点的高斯白噪声的产生,可以使用其研究信号的传输特性,对于高斯白噪声的产生即是产生一些离散的高斯随机数,matlab中对于高斯随机数的产生有特定的函数,一行代码即可搞定,但是对于使用c语言编程实现,就使用到很多关于统计数学方面的知识。

方法一:包括使用c语言自带的产生随机数函数,产生n多个随机数,然后将这很多个随机数加起来,当作一个样本,然后产生很多个这样的样本,这些数据的和或者均值就会趋近于高斯分布,最后可以使用归一化处理方式将数据映射至某个特定的数据区间,这种方法实现起来比较简单。

方法二:这种方法是使用著名的Box-Muller方法,这是一种实现起来也比较简单但是分析其真正算法实现方法时候十分的复杂,它的原理是产生两个满足[0,1]上均匀分布的数据x,y,然后通过两个设定的公式让其转换为相互独立的高斯分布数据X,Y,这两个公式使用一个即可:

7c43bed1a71a3ee104a67b30b2a0c8b3.png

a2ed7d1cb3b1e50fb27b865bf4f837a3.png

怎样产生利用循环产生多个高斯随机数,再将每个数据进行归一化映射,映射至某个需要的幅度值区域,对于给定的均值m和标准偏差sd的情况下的高斯随机数,只需要在此基础上再做如下运算处理:

e44d3208a9204265372e55393a2f4cb2.png

c编程实现如下(代码没有完全展示):

080a0883b764aff9fc95d8daf99012b0.png

产生数据写入文本中,为了方便作图,同时产生一列x坐标的数据:

d17530101d714d6ba2f08de0b4a4ab9e.jpg

3. gnuplot绘图

上面产生了区间为[-2:2]的高斯随机数,产生了512个数据,利用gnuplot画出它的散点分布图如下:

7395b3a973644162b7b345dc595ab66a.png

连续高斯白噪声图如下:

ee4cc2a8b39aca7d9b7a74757dd6fdea.png

将产生的高斯随机数进行fft变换,利用gnuplot观察高斯随机数的频谱图;

3719410fd71943499091ebab2b8810d3.jpg

由上面的频谱图分析来看,生产的高斯随机数的频谱满足近似于均匀分布,当然,在频率分辨率更高和高斯随机数点数更多的时候,均匀分布更明显。

信号通过信道传输就是在远离啊信号中叠加上高斯白噪声信号,下图绘制处AM信号中叠加高斯白噪声的模拟图像:

05b0a65bd0091d58045d2b825bd13b54.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231515.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月7日 下午8:01
下一篇 2025年12月7日 下午8:22


相关推荐

  • log4j pattern详解_log4j.additivity

    log4j pattern详解_log4j.additivity  在log4j的javadoc里面找到了所有的pattern,总结一下:%c输出类的名字,默认是输出全名,可以指定输出多少层次,比如%c{2}这样配置的话”a.b.c”是全类名,会输出”b.c”. %d用来输出log事件发生的时间。可以指定格式,比如:%d{yyyy-MM-ddHH:mm:ss}会输出2007-04-2620:12:03 %F   输出

    2022年8月22日
    7
  • linux中zip文件解压命令,Linux中zip压缩和unzip解压缩命令使用方法

    linux中zip文件解压命令,Linux中zip压缩和unzip解压缩命令使用方法Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在Linux中,我们可以利用命令进行文件压缩,即zip压缩和unzip解压缩,这篇文章主要介绍了详解Linux中zip压缩和unzip解压缩命令及使用详解,本文给大家介绍的非常详细,需要的朋友可以参考下下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解1、把/home目录下面的mydata目录压缩为m…

    2022年6月7日
    59
  • Navicat Premium 15激活【2021最新】

    (Navicat Premium 15激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    71
  • linux系统怎么利用LVM扩容

    linux系统怎么利用LVM扩容引言:在linux系统下,如果在虚拟机层面进行扩容,首先是挂载一块虚拟机硬盘,然后在linux系统底下去分区,然后对挂载到新的目录,但是,如果是对linux系统里面的文件目录本身进行扩容的话,只能使用LVM来进行扩容,本文将分两部分介绍,第一部分是如何创建LVM的分区,第二部分是如何对文件目录本身利用LVM来进行扩容:创建LVM分区:1如下图,我这里有一块硬盘已经分区,如果直接对这块硬盘创建LVM分区,会报错,因此,可以先清除掉这块硬盘的分区这里本身已经分了区,如果要使用这块硬盘进行L…

    2022年6月20日
    32
  • mysql的mediumtext类型字段在java如何获取

    mysql的mediumtext类型字段在java如何获取数据库:PO:重点是autoResultMap=true和@TableField(typeHandler=FastjsonTypeHandler.class)@Data@EqualsAndHashCode(callSuper=false)@TableName(value=”xxx”,autoResultMap=true)@ApiModel(“一分钱充值用户配置表”)publicclassxxximplementsSerializable{@Tabl

    2022年5月18日
    57
  • uml用例图详解_uml模型图

    uml用例图详解_uml模型图用例图的含义由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(CommunicationAssociation)。用例图的作用用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领…

    2025年9月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号