编写代码实现三点平均器,输入一个受均值为0、方差为1的高斯随机噪声Noise(n)干扰的正弦序列x(n)=10si n(0.02nπ)+Noise(n),0≤n≤100,在同一幅图上绘制三点平均前后的序列图形,
时间: 2024-09-30 18:03:49 浏览: 24
Matlab产生正弦波、均匀白噪声、高斯白噪声,并将两种噪声叠加到正弦波上。并给出自相关和功率谱密度波形.zip
编写代码实现三点平均器的过程通常涉及到信号处理,这里我将以Python语言和matplotlib库为例来说明如何操作。首先需要导入必要的库,然后生成噪声信号和正弦序列,接着应用三点平均滤波,最后绘制原始信号和处理后的信号。
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter
# 定义正弦序列参数
frequency = 0.02 * np.pi
noise_variance = 1
num_points = 101
# 生成正弦序列和高斯噪声
x = 10 * np.sin(frequency * np.arange(num_points)) + np.random.normal(0, np.sqrt(noise_variance), num_points)
# 设定窗口大小为3(即三点)
window_size = 3
# 应用三点平均滤波
filtered_x = savgol_filter(x, window_size, polyorder=1)
# 绘制原始信号和处理后的信号
plt.figure(figsize=(8, 4))
plt.plot(x, label='Original Signal', marker='o')
plt.plot(filtered_x, label='Filtered Signal (3-point moving average)', marker='o')
plt.axhline(y=0, color='k', linestyle='--', alpha=0.5)
plt.legend()
plt.title('Comparison of Original and Smoothed Sinusoidal Signal with Noise')
plt.xlabel('Sample Index')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()
阅读全文