matlab白噪声生成,数字信号处理——matlab生成白噪声

数字信号处理——matlab生成白噪声

LucasNan • 2021 年 01 月 23 日

Loading...

白噪声属于随机信号,是信号处理、通信及自动控制等领域常用的噪声模型,理想的白噪声信号的频谱在整个频率范围内都有值,而且频谱的幅度都一样。

## 1、白噪声

`rand`函数可用来生成**均值为0.5,方差为1/12,幅度在0~1之间均匀分布**的伪随机数。我们在数字信号处理中用它来近似均匀分布的白噪声信号。

- 产生一均匀分布,均值为0.5,功率为1/12的白噪声信号

```matlab

clear;

N=50000;

u = rand(1,N);

mean_u = mean(u)# mean_u = 0.5

power_u = var(u)# 功率等效为方差 power_u = 1/12

subplot(211);

plot(u(1:100));grid on;

subplot(212);

hist(u,50);grid on;

```

![](http://kevinnan.org.cn/usr/uploads/2021/01/2726335536.png)

- 产生一个均匀分布、均值为0、功率为0.01的白噪声信号

要将均值变为0,功率变为0.01。要实现前者,只需将信号减去均值即可;而实现后者需要调整信号的幅度。

令P=0.01是所需功率,只需:

$$

a = \sqrt{P/\sigma_u^2}=\sqrt{P/(1/12)}=\sqrt{12P}

$$

```matlab

p = 0.01;

N = 5000;

u2 = rand(1, N);

u2 = u2 - mean(u2);# 减去均值,得到均值为0

u2 = u2 * sqrt(p*12);# 调整幅度,改变功率

power_2 = dot(u2,u2)/N# 计算功率看是否满足要求power_u2 = 0.0101

power_u2 = var(u2)# 同上功率可用方差代替计算

mean_u2 = mean(u2)# 验证均值mea_u2 = 0

figure(2);

plot(u2(1:500));

```

![](http://kevinnan.org.cn/usr/uploads/2021/01/3902115001.png)

## 2、高斯白噪声

高斯噪声指的是它的概率密度函数服从正态分布的噪声。`randn`函数可用来**生成均值为0、方差为1、服从高斯分布的白噪声信号**。

改变其功率的方法与前面提到的类似,只需将公式$a=\sqrt{12P}$中的12改为1即可。

- 产生均值为0、功率为0.1,且服从高斯分布的白噪声信号

```matlab

p = 0.1;

N = 5000;

u = randn(1,N);

u = u * sqrt(p);# 改变功率

mean_u = mean(u)# 验证均值mean_u = 0

power_u = var(u)# 验证功率power_u = 0.1

figure(3);

subplot(211);plot(u(1:500));

subplot(212);hist(u,100);grid on;

```

![](http://kevinnan.org.cn/usr/uploads/2021/01/3529535327.png)

## 3、参考资料

[1] 胡广书.数字信号处理[M].北京:清华大学出版社,2005:31-35

[2] [基础知识补充——白噪声、高斯白噪声](https://blog.csdn.net/Z_Sweet1996/article/details/79183255)

你可能感兴趣的:(matlab白噪声生成)