使用Matlab生成幅度在[-1 1]之间的白噪声

时间:2013-01-25 18:16:08

标签: matlab random noise

我正在使用Matlab函数Y = WGN(M,N,P)来生成具有高斯分布的白噪声。此功能使用功率值(dB瓦特)来计算输出信号的幅度。由于我希望输出幅度范围为-1 V至1 V,因此功能模式为“线性”。

我正在尝试使用'线性'模式来产生输出,但结果是输出幅度范围为[-4 4]

RandomSignal = wgn(10000,1,1,1,'linear');
Time = linspace(0,10,10000);
figure()
plot(Time,RandomSignal)

figure()
hist(RandomSignal,100) 

是否有另一个函数来产生这个结果,或者我只是做错了什么?

5 个答案:

答案 0 :(得分:4)

正如其他人所说,你不能限制高斯分布。 您可以做的是将您的范围定义为6个标准偏差,然后使用randn(m,sigma)生成您的信号。

例如,如果你想要一个[-1 1]的范围,你将选择sigma = 2/6 = 0.333和Mu = 0。这将使99.7%的机会在该范围内。然后,您可以向上和向下舍入那些超出范围的数字。

这不是纯粹的高斯分布,但这是你能得到的最接近的分布。

答案 1 :(得分:4)

为什么你只需要接受任何边界的randn函数,然后像前ex那样将其标准化。

 noise=randn(400); noise=noise./max(max(noise)); 

所以无论randn的输出是什么,最后你都会有一个w.n.在[-1 1]内。

答案 2 :(得分:3)

高斯噪声具有无限范围。 (高斯pdf的支持是无限的。)

答案 3 :(得分:3)

您可以使用rand而不是高斯生成器。 rand的输出范围是0-1,因此要使其在-1 1范围内使用rand(args)*2 -1

应该注意的是,这台发生器采样的密度均匀。

答案 4 :(得分:0)

不想说出非常错误的内容,但是当我复制代码并更改

RandomSignal = .25*wgn(10000,1,1,1,'linear');
那时候还可以。希望它适合你。(假设随机数据/ 4仍然是随机数据)