matlab 产生白噪声
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 产生白噪声相关的知识,希望对你有一定的参考价值。
用matlab产生服从高斯分布,均匀分布,指数分布,瑞利分布的白噪声,并绘出噪声信号及其直方图
y=randn(1,100);高斯分布
y=rand(1,100);均与分布
R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。
RAYLCDF Rayleigh cumulative distribution function.
P = RAYLCDF(X,B) returns the Rayleigh cumulative distribution
function with parameter B at the values in X.
The size of P is the common size of X and B. A scalar input
functions as a constant matrix of the same size as the other input.
扩展资料
matlab中噪声功率、噪声方差关系,以matlab中awgn函数为例说明:
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即:wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
根据awgn的实现代码可以知道”向已知信号添加某个信噪比(SNR)的高斯白噪声“,即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
在求出x的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower=sigPower/SNR。
由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是:sqrt(noisePower)*randn(n,1)
其中n为信号长度,自然要求的白噪声的方差也可以求出来。
参考资料来源:百度百科 - 白噪声
百度百科 - MATLAB
百度百科 - AWGN
这样:
randn函数产生高斯分布序列,例如:
y=randn(1,2500);
y=y/std(y);
y=y-mean(y);
a=0.0128;
b=sqrt(0.9596);
y=a+b*y;
y=rand(1,100);均与分布
R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。
RAYLCDF Rayleigh cumulative distribution function.
P = RAYLCDF(X,B) returns the Rayleigh cumulative distribution
function with parameter B at the values in X.
The size of P is the common size of X and B. A scalar input
functions as a constant matrix of the same size as the other input.
扩展资料:
注意事项
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
直接对原始信号添加噪声:
y=x+rand(length(x),1)
y=x+randn(length(x),1))
参考技术B y=randn(1,100);高斯分布y=rand(1,100);均与分布
R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。
RAYLCDF Rayleigh cumulative distribution function.
P = RAYLCDF(X,B) returns the Rayleigh cumulative distribution
function with parameter B at the values in X.
The size of P is the common size of X and B. A scalar input
functions as a constant matrix of the same size as the other input.本回答被提问者采纳
Matlab中randrandnrandirands的区别以及用randn生成白噪声的示例
2020-05-30 20:42:05
Matlab中生成随机数的函数有多个:rand、randn、randi、rands,其简要说明和区别如下:
rand(m,n) : 在 ( 0~1 ) 内生成m行n列均匀分布的伪随机数矩阵;
randn (m,n) : 生成m行n列标准正态分布 ( 均值为0,方差为1 ) 的伪随机数矩阵;
rands(m,n) : 在 ( -1~1 ) 内生成m行n列均匀分布的伪随机数;
randi( [min,max] , m , n) : 在 [min,max] 内生成m行n列的均匀分布的随机整数矩阵;
下面重点讨论randn函数:
randn用法详细说明:
x = randn——返回一个伪随机数x,其值来自于均值为0,标准差为1的正态分布;
x = randn(n)——返回一个n x n的矩阵,其元素值来自于均值为0,标准差为1的正态分布;
x = rand( m ,n ) 或 x = x = rand( [m ,n] ),——返回一个 m x n的矩阵,其元素值来自于均值为0,标准差为1的正态分布。
在音频算法测试中,常常要用到白噪声(例如给纯净音频叠加白噪声等),由于白噪声的定义和特性:
白噪声一种功率谱密度为常数的随机信号,换言之,白噪声在各个频段上的功率相等(若不满足以上条件,则不是白噪声,而被称为“有色噪声”),百度百科:白噪声
因此,由于白噪声的功率谱是正态分布的,所以要用randn来生成白噪声,Matlab中生成幅值为0~1的白噪声的代码如下:
1 noise_white=randn(1,wav_len); % 生成长度为wav_len的白噪声,满足正态分布; 2 noise_white=noise_white/max(abs(noise_white)); % 白噪声信号幅度归一化,此处白噪声幅值范围:0~1;
以上是关于matlab 产生白噪声的主要内容,如果未能解决你的问题,请参考以下文章