2

我正在使用 Matlab 函数Y = WGN(M,N,P)生成具有高斯分布的白噪声。此函数使用功率值 (dB Watts) 来计算输出信号的幅度。由于我想获得 -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) 

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

4

5 回答 5

4

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

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

这将不是纯高斯分布,但这是您可以获得的最接近的分布。

于 2013-01-25T21:51:56.017 回答
4

为什么你只取任何边界的 randn 函数,然后像这个 ex 一样对其进行标准化。

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

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

于 2014-09-29T07:39:58.853 回答
3

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

于 2013-01-25T18:24:27.417 回答
3

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

应该注意的是,这个生成器正在采样一个均匀的密度。

于 2013-01-25T18:36:27.987 回答
0

不想说很不对的东西,但是当我复制你的代码并改变时

RandomSignal = .25*wgn(10000,1,1,1,'linear');

那时没关系。希望它对你有用。(假设随机数据/4 仍然是随机数据)

于 2013-01-25T18:21:38.220 回答