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

白噪声(white noise)是指功率谱密度在整个频域内均匀分布的噪声。 所有频率具有相同功率密度的随机噪声称为白噪声。
按幅度分布方式又可以分为均匀分布和高斯分布。

1.均匀分布的白噪声

1.1均匀分布

均匀分布百度百科
在概率论和统计学中,均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。 均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b);
属性:
在这里插入图片描述

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

运行结果:
mean_x =

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

符合要求。

方法2:
rand函数默认均值为0.5,功率为0.083333,分析目标信号,获取上下限a、b即可:目标信号均值为1,即(a+b)/2=1;功率为8.3333,相比于单位均匀分布的功率增大100倍,即对应幅度增大10倍,因此b-a=10*(1-0),计算得b=6,a=-4

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)     %验证均值

运行结果:
mean_x =

1.0515

power_x =

8.4122

符合要求。

2.高斯分布的白噪声

2.1均匀分布

高斯分布百度百科
正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。
若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 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)     %验证均值

运行结果:
power_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=normrnd(MU,SIGMA)
R=normrnd(MU,SIGMA,m)
R=normrnd(MU,SIGMA,m,n)
说 明:
R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,SIGMA参数代表标准差)的随机数。输入的向量或矩阵MU和SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有 相同维数的矩阵。

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

符合要求。

要在MATLAB中生成均匀分布白噪声信号,可以使用rand函数。rand函数默认产生的是均匀分布的伪随机数,但其均值不为零,所以需要去除信号的直流分量才能符合白噪声定义。以下是一个示例代码: ```matlab N = 50000; % 信号的长度 u = rand(1, N) - 0.5; % 生成均匀分布的伪随机数,并去除直流分量 u_mean = mean(u); % 求u(n)的均值 power_u = var(u); % 求u(n)的方差 subplot(211) plot(u(1:100)) grid on ylabel('u(n)') subplot(212) hist(u, 50) grid on ylabel('histogram of u(n)') ``` 这段代码会生成一个长度为N的均匀分布白噪声信号u(n),并画出其波形直方图,以检验其分布情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MATLAB产生白噪声](https://blog.csdn.net/weixin_45696224/article/details/122385116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [使用MATLAB产生均匀分布白噪声信号](https://blog.csdn.net/qq_44420246/article/details/100587091)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [matlab产生高斯白噪声](https://blog.csdn.net/qinghuanduji/article/details/113728753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值