在一些论文中,我读到加性噪声是带限高斯白。
如何使用 MATLAB 模拟这种类型的噪声?
如何在 MATLAB 中生成带限高斯白噪声?
信息处理
matlab
噪音
高斯
2021-12-20 00:20:51
4个回答
您将通过首先生成白噪声,然后将其过滤到您想要的带宽来生成带限高斯噪声。举个例子:
% design FIR filter to filter noise to half of Nyquist rate
b = fir1(64, 0.5);
% generate Gaussian (normally-distributed) white noise
n = randn(1e4, 1);
% apply to filter to yield bandlimited noise
nb = filter(b,1,n);
就像对 Jason 的回答的一个小补充:通常您需要生成具有给定方差的带限噪声。您可以将此代码添加到 Jason 的答案中给出的代码中:
var = 3.0; % just an example
scale = sqrt(var)/std(nb);
nb = scale*nb; % nb has variance 'var'
请注意,您必须在过滤后进行缩放,因为通常过滤器会改变噪声方差。
每次生成离散噪声样本(例如使用 MATLAB 的randn
/ rand
)时,实际上都会生成带限噪声。
您需要做的就是将离散样本的方差调整为据称从中提取这些样本的“连续”噪声的方差。
给定具有方差的速率对其进行采样,您应该生成方差为。
的理想 LPF 滤波器,此结果是有效的。
此处给出了完整的描述 -如何在特定带宽的通信系统中模拟 AWGN(加性高斯白噪声)。
为什么不能使用StackOverflow 中提到的方法:如何在频率范围内产生噪声numpy
?
它从所需的频率开始,然后向后工作以构建信号,而不是过滤。它使用 python 代码,但也链接到原始的 Matlab 代码。
这样做有什么缺点吗?
其它你可能感兴趣的问题