我正在使用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)
是否有另一个函数可以产生此结果,或者我只是做错了什么?
高斯分布的尾部为无穷大。 您不能保证将其限制在任何特定的数值范围内。
为什么只使用randn函数的任何约束,然后像以前一样将其标准化。
noise=randn(400); noise=noise./max(max(noise));
所以无论randn的输出是什么,您最终都会有w.n.内部[-1 1]。
正如其他人所说,您不能限制高斯分布。
您可以做的是将范围定义为6个标准差,然后使用randn(m,sigma)生成信号。
例如,如果您希望范围为[-1 1],则将选择sigma = 2/6 = 0.333和Mu = 0。这将有99.7%的机会在该范围内。然后,您可以向上和向下舍入超出范围的数字。
这将不是纯粹的高斯分布,但这是您可以获得的最接近的分布。
您可以使用rand而不是高斯生成器。 rand的输出范围是0-1,因此使用rand(args)*2 -1使其在-1 1范围内。
应该注意的是,该发生器正在采样均匀的密度。
确实,但是那不是高斯式的。
@OliCharlesworth当然不是。 你不能两者兼得。 但他仍将获得平坦的光谱密度
高斯噪声的范围是无限的。 (高斯pdf的支持是无限的。)
不想说错什么,但是当我复制代码并进行更改时
RandomSignal = .25*wgn(10000,1,1,1,'linear');
那没关系。希望它对您有用(假设随机数据/ 4仍然是随机数据)
不好 降低噪声功率会减少获得[-1:1]之外的值的机会,但概率仍然不为零。
如果多次尝试使用此代码,将会看到一些输出幅度波动。 WGN功能可能难以控制,因此我要求一种确保输出在-1和1之间的模式。
@PVaz:如果噪声限制在该范围内,则不是高斯噪声。