我正在使用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)
是否有另一个函数来产生这个结果,或者我只是做错了什么?
答案 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仍然是随机数据)