matlab产生高斯白噪声

matlab产生高斯白噪声函数介绍matlab里和随机数有关的函数:(1)rand:产生均值为0.5、幅度在0~1之间的伪随机数。(2)randn:产生均值为0、方差为1的高斯白噪声。(3)randperm(n):产生1到n的均匀分布随机序列。(4)normrnd(a,b,c,d):产生均值为a、方差为b大小为cXd的随机矩阵。rand:返回一个在区间(0,1)内均匀分布的随机数。rand(n):生成0到1之间的n阶(n×n)随机数方阵。rand(m,n):生成0到1之间的m×n的随机数矩阵。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

函数介绍

matlab里和随机数有关的函数:
(1) rand:产生均值为0.5、幅度在0~1之间的伪随机数。
(2) randn:产生均值为0、方差为1的高斯白噪声。
(3) randperm(n):产生1到n的均匀分布随机序列。
(4) normrnd(a,b,c,d):产生均值为a、方差为b大小为cXd的 随机矩阵。

  • rand:返回一个在区间 (0,1) 内均匀分布的随机数。

    • rand(n):生成0到1之间的n阶( n×n )随机数方阵。
    • rand(m,n):生成0到1之间的m×n的随机数矩阵。
  • randn:返回一个从标准正态分布中得到的随机标量。

    • randn()命令是产生白噪声的,白噪声应该是0均值,方差为1的一组数。
    • 同rand函数一样,randn(n),randn(m,n)含义与上述一致。
    • randn(size(A)),返回一个和A有同样维数大小的随机数组。
  • randperm:整数的随机排列。

    • p = randperm(n) 返回行向量,其中包含从 1 到 n 没有重复元素的整数随机排列。
    • p = randperm(n,k) 返回行向量,其中包含在 1 到 n 之间随机选择的 k 个唯一整数
  • normrnd:生成服从正态分布的随机数

    • r = normrnd(mu,sigma)均值参数为 mu标准差参数为 sigma 的正态分布中生成随机数。
    • R=norrmrnd(MU,SIGMA,m):从均值参数为 mu标准差参数为 sigma 的正态分布中生成随机数,矩阵的形式由m定义。m是一个1×2向量,其中的两个元素分别代表返回值R 中行与列的维数。
    • R=normrnd(MU,SIGMA,m,n): 生成m×n形式的正态分布的随机数矩阵。

注:

  • 一般来说,可以使用公式r = a + (b-a).*rand(N,1)生成区间 (a,b) 内的 N 个随机数。
  • rand是0-1的均匀分布,randn是均值为0方差为1的正态分布。
  • 理论上randn()生成的随机数分布范围为(-∞,+∞),即无穷大。Matlab中randn()是产生正态分布的随机数或矩阵的函数,它产生均值为0,方差为1,标准差为1的正态分布的随机数或矩阵的函数。

高斯白噪声函数

  • 高斯白噪声概念解释
    • 高斯白噪声(white Gaussian noise; WGN):均匀分布于给定频带上的高斯噪声
      • 如果一个噪声,它的幅度服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。
      • 高斯白噪声中的高斯是指概率分布是正态函数,而白噪声是指:它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。这是考察一个信号的两个不同方面的问题。
      • 热噪声散粒噪声高斯白噪声
  • matlab高斯白噪声函数介绍:——wgn( )、awgn( )
    • WGN:产生高斯白噪声
      • y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度
      • y = wgn(m,n,p,imp)欧姆(Ohm)为单位指定负载阻抗
      • y= **wgn(…,outputtype)**指定输出类型,OUTPUTTYPE可以是’real’或’complex’来获得复噪声信号。
      • y=**wgn(…,powertype)**指定p的单位。POWERTYPE可以是’dBW’, ‘dBm’或’linear’。线性强度(linear power)以瓦特(Watt)为单位。
      • linear表示线性强度(linear power),单位为Watt。如果输入其他:‘dBw’或缺省则表示用dBw作为功率单位
    • AWGN:在某一信号中加入高斯白噪声
      • y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是 复数,就加入复噪声。
      • y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为’measured’,则函数将在加入噪声之前测定信号强度。
      • y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。
      • y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是’dB’或’linear’。如果POWERTYPE是’dB’,那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是’linear’,那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。

注:

  • 一阶矩就是随机变量的期望二阶矩就是随机变量平方的期望,以此可以类推高阶的矩。
  • 分贝(decibel, dB):分贝(dB)是表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。
    • 例如,电子系统中将电压、电流、功率等物理量的强弱通称为电平,电平的单位通常就以分贝表示,即事先取一个电压或电流作为参考值(0dB),用待表示的量与参考值之比取对数(以10为底的对数),再乘以20作为电平的分贝数(功率的电平值改乘10)。
    • 分贝瓦(dBW, dB Watt):指以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值
      • dBm (dB-milliWatt):即与1milliWatt(毫瓦)作比较得出的数字。
      • 0 dBm = 1 mW 10 dBm = 10mW 20 dBm = 100 mW

总结

  • 在matlab中无论是wgn还是awgn函数实质都是由randn函数产生的噪声
  • 即:wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
  • awgn(x,snr,’measured’,’linear’)表示向已知信号添加某个信噪比(SNR)的高斯白噪声“,命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度
    • 定义解释:
      • SNR就是信号的强度除以噪声的强度或者信号功率与噪声功率之比((注:由于采用的是比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步骤))
      • 信号的强度指的就是信号的能量,在连续的情形就是对x平方后求积分,而在离散的情形是求和代替积分(在matlab中sigPower= sum(abs(sig(: )).^2)/length(sig(: )),这就是信号的强度,这里sig(: )为信号。)
    • 在求出x的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower = sigPower/ SNR。由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是: sqrt(noisePower)*randn(n,1)其中n为信号长度。
    • matlab 例子:
X = sqrt(2)*sin(0:pi/1000000:6*pi);               % 产生正弦信号
Y = awgn(X,10,'measured');                        % 加入信噪比为10db的噪声,加入前预估信号的功率(强度)
sigPower = sum(abs(X).^2)/length(X)           	  % 求出信号功率
noisePower=sum(abs(Y-X).^2)/length(Y-X)  		  % 求出噪声功率
SNR=10*log10(sigPower/noisePower)        		  % 由信噪比定义求出信噪比,单位为db

Jetbrains全家桶1年46,售后保障稳定

  • 运算结果如下所示:
    在这里插入图片描述
    • WGN(m,n,p)产生功率为p dBW的m*n的高斯白噪声矩阵,其中p是以dbW为单位的输出强度。若要产生一个均值0,方差为0.0965 的高斯白噪声,不可直接用WGN(N,1,0.0965)产生(单位不对应)
    • 对高斯白噪声,其方差和功率(单位为W)是一样的。因此,对方差,要做的只是将w变换成dbw,即dbw=10log(w)
    • 做法如下有两种:
%% 方法一:
N=1000;
x=sqrt(0.0965)*randn(N,1);
Px=(x.'*x)/N   % 验证,这里Px的求法与上面noisePower=sum(abs(Y-X).^2)/length(Y-X)的求法是一致的
%% 方法二:
N=1000;
y=wgn(N,1,10*log10(0.0965));
Py=(y.'*y)/N   % 验证

信噪比,英文名称叫做SNR或S/N(Signal Noise Ratio),是指系统中信号与噪声的比例。信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。
信噪比的计量单位是dB,其计算方法是10LOG(Ps/Pn),其中Ps和Pn分别代表信号和噪声的有效功率,也可以换算成电压幅值的比率关系:20LOG(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。信噪比应该越高越好。

参考来源

matlab 中产生高斯白噪声
高斯白噪声及Matlab常用实现方法
关于dB 分贝
Matlab产生高斯白噪声
MATLAB产生特定功率谱密度的高斯白噪声的两种方法

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/198372.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • CRC校验算法详解及代码实现[通俗易懂]

    CRC校验算法详解及代码实现一、 CRC校验算法前置知识在学习CRC校验算法之前,先复习一下CRC会涉及的主要几个主要的算法。异或异或,就是不同为1,相同为0,运算符号是^。0^0=00^1=11^1=01^0=1异或运算存在如下几个规律,需要了解。0^x=x 即0异或任何数等于任何数1^x=~x 即1异或任何数等于任何数取反…

  • voliate 关键字「建议收藏」

    voliate 关键字「建议收藏」voliatecpu术语定义术语英文单词术语描述内存屏障cachebarriers处理器的指令,用于实现对内存操作的顺序限制原子操作atomicopers不可中断的一个操作缓存行填充cachelinefill当处理器识别到内存的读操作是可缓存的,处理器读取整个缓存行到适合的缓存(L1,L2,L3)缓存命中cachehit当进行高速缓存行填充的内存位置不变时,处理器从缓存中读取,而非内存写命中writehitpp写

  • unknowndevice修复_eclipse unable to launch

    unknowndevice修复_eclipse unable to launch相信做Android开发的,都会遇到这个问题,在这里,仅仅给自己解决问题的方式,供大家参考看一下图片,图片是从别的网站上摘的解决方案:1.重启手机;(我的解决方法,是在StackOverflow看到的 http://stackoverflow.com/questions/10731375/eclipse-target-unknown-in-android-device-

  • Netstat 网络命令详解

    Netstat 网络命令详解Netstat简介Netstat是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括tcp,udp以及unix套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

  • 5G Wifi频段及信道介绍[通俗易懂]

    5G Wifi频段及信道介绍[通俗易懂]5GWifi频段及信道介绍WiFi三频AP规划信道时,建议分别采用2.4G、5.2G、5.8G频段可用信道。2.4G频段;5.2G频段;5.8G频段。中国5GWiFi频段5.8GHz频段,中国开放只有149、153、157、161、165这5个信道;其中可支持一组80MHz信道捆绑(149-161)或两组40MHz捆绑(149-153和157-161);所以165信道支持…

  • 探索WebKit内核(一)—— 菜鸟起步

    探索WebKit内核(一)—— 菜鸟起步

    2021年12月14日

发表回复

您的电子邮箱地址不会被公开。

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