窄带高斯白噪声仿真代码
时间: 2024-11-07 17:03:00 浏览: 13
基于MATLAB的高斯白噪声信道分析报告书.docx
窄带高斯白噪声是一种常见的模拟信号噪声模型,它在通信系统分析中扮演重要角色。下面是一个简单的Python代码片段,用于生成二维矩阵形式的窄带高斯白噪声:
```python
import numpy as np
import matplotlib.pyplot as plt
# 设置噪声参数
noise_power = 0.1 # 噪声功率
sampling_freq = 1e3 # 采样频率
bandwidth = 100 # 带宽
t = np.arange(0, 1, 1/sampling_freq) # 时间轴
nyquist_freq = sampling_freq / 2 # 尼奎斯特频率
def generate_white_noise(frequency, duration, noise_power):
# 计算噪声样本点的数量
num_samples = int(duration * sampling_freq)
# 创建随机数据(零均值,单位方差)
white_noise = np.random.normal(size=num_samples)
# 转换为幅度谱并平滑(假设噪声是正交的)
noise_spectrum = np.fft.rfft(white_noise) / num_samples
noise_spectrum[:int(nyquist_freq-bandwidth):] = 0 # 切断带外
noise_spectrum[int(nyquist_freq+bandwidth):] = 0 # 切断带内
# 返回实数部分,还原到时域
noisy_signal = np.fft.irfft(noise_spectrum * (2 * bandwidth / nyquist_freq))
return noisy_signal, t
# 生成噪声
noisy_signal, time = generate_white_noise(bandwidth, len(t), noise_power)
# 可视化结果
plt.plot(time, noisy_signal)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Narrowband Gaussian White Noise')
plt.show()
阅读全文