均匀分布白噪声和高斯白噪声及其matlab产生方式

均匀分布白噪声和高斯白噪声及其matlab产生方式白噪声 whitenoise 是指功率谱密度在整个频域内均匀分布的噪声

大家好,欢迎来到IT知识分享网。

1.均匀分布的白噪声

1.1均匀分布

1.2 rand函数及单位均匀分布

rand函数用来产生(0, 1)之间均匀分布的随机数组成的数组,即单位均匀分布
Y = rand(n) 返回一个n x n的随机矩阵。如果n不是数量,则返回错误信息。
Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵。
Y = rand(m,n,p,…) 或 Y = rand([m n p…]) 产生随机数组。
Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。
根据1.1章节可知,rand函数生成的数据均值为(0+1)/2=0.5;方差(功率)为1/12。




n=10000; x=rand(1,n); %产生(0-1)单位均匀信号,1行,n列 subplot(211) plot(x); %输出信号图 set(gca,'FontSize',20); title('0-1服从均匀分布的随机序列信号'); subplot(212) hist(x,50) set(gca,'FontSize',20); title('0-1服从均匀分布的随机序列直方图'); 

在这里插入图片描述
验证其均值为0.5,方差(功率)为1/12,即0.08333。

mean_x = mean(x) %验证均值为0.5 power_x = var(x) %验证功率为1/12 
0.4987 

power_x =

0.0831 

符合要求。

1.3 rand函数生成广义均匀分布信号

实现均值为1,功率为8.3333的均匀分布噪声
方法1:

p = 8.3333; N = 10000; average = 1; temp1 = rand(1, N); %产生(0-1)单位均匀信号,1行,n列 temp2 = temp1 - mean(temp1);%减去均值,得到均值为0 temp3 = temp2 * sqrt(p*12);%调整幅度,改变功率,默认功率为1/12 x = temp3 + average; %调整均值 figure plot(x); set(gca,'FontSize',20); title('服从均匀分布的随机序列信号'); 

在这里插入图片描述

验证其均值为1,方差(功率)为8.3333。

power_x = var(x) mean_x = mean(x) 

运行结果:

power_x =

8.4519 

mean_x =

1.0000 

符合要求。

a=-4; %(a-b)均匀分布下限 b=6; %(a-b)均匀分布上限 fs=1e6; %采样率,单位:Hz t=1e-2; %随机序列长度,单位:s n=t*fs; rand('state',0); %把均匀分布伪随机发生器置为0状态 u=rand(1,n); %产生(0-1)单位均匀信号,1行,n列 x=(b-a)*u+a; %广义均匀分布与单位均匀分布之间的关系 subplot(211); plot(x); %输出信号图 set(gca,'FontSize',20); title('服从均匀分布的随机序列信号'); subplot(212) hist(x,50) set(gca,'FontSize',20); title('服从均匀分布的随机序列直方图'); 

在这里插入图片描述
验证其均值为1,方差(功率)为8.3333。

power_x = var(x) %验证功率 mean_x = mean(x) %验证均值 
1.0515 

power_x =

8.4122 

符合要求。

2.高斯分布的白噪声

2.1均匀分布

2.2 randn生成标准正态分布伪随机数

matlab语法与rand函数基本一致,所不同的是,randn产生的数值服从正态分布,即均值为0,方差为1。

 y=randn(1,10000); subplot(2,1,1);plot(y); set(gca,'FontSize',20); title('服从高斯分布的随机序列信号'); subplot (2,1,2);hist(y,50); set(gca,'FontSize',20); title('服从高斯分布的随机序列直方图'); 

在这里插入图片描述
验证其均值为0,方差为1。

power_y = var(y) %验证功率 mean_y = mean(y) %验证均值 
0.9823 

mean_y =

0.0088 

符合要求。

2.3 randn生成正态分布伪随机数

产生一个随机分布的指定均值和方差的伪随机数:将randn产生的结果乘以标准差,然后加上期望均值即可。例如,产生均值为2,方差为0.01的一个1×10000随机数,方式如下:

 temp = randn(1,10000); var_value= 0.01; average = 2; y=temp*sqrt(var_value) + average; subplot(2,1,1);plot(y); set(gca,'FontSize',20); title('服从高斯分布的随机序列信号'); subplot (2,1,2);hist(y,50); set(gca,'FontSize',20); title('服从高斯分布的随机序列直方图'); 

在这里插入图片描述
验证其均值为2,方差为0.01。

power_y = var(y) %验证功率 mean_y = mean(y) %验证均值 

运行结果:

power_y =

0.0099 

mean_y =

2.0004 

符合要求。

2.4 normrnd生成正态分布伪随机数

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

R=normrnd(MU,SIGMA,m,n): 生成m×n形式的正态分布的随机数矩阵。

clear clc close all y=normrnd(2,0.1,1,10000); %第一个参数均值,第二个参数标准差,第三、四参数行数和列数 %目标信号方差为0.01,即标准差0.1 subplot(2,1,1);plot(y) set(gca,'FontSize',20); title('均值为2,方差为0.01服从高斯分布的随机序列信号'); subplot (2,1,2);hist(y,50); set(gca,'FontSize',20); title('均值为2,方差为0.01服从高斯分布的随机序列直方图'); 

在这里插入图片描述

power_y = var(y) %验证功率 mean_y = mean(y) %验证均值 

power_y =

0.0100 

mean_y =

2.0019 

符合要求。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126009.html

(0)
上一篇 2025-09-22 15:10
下一篇 2025-09-22 15:20

相关推荐

发表回复

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

关注微信