编写代码实现三点平均器,输入一个受均编写代码实现三点平均器,输入一个受均值为0、方差为1的高斯随机噪声Noise(n)干扰的正弦序列x(n)=10sin(0.02nΠ)+Noise(n),0<=n<=100,在同一幅图上绘制三点平均前后的序列图形,分析滑动平均器的作用。
时间: 2024-10-14 21:10:10 浏览: 18
首先,我们可以使用Python的NumPy库来生成高斯噪声和正弦序列,并利用matplotlib来绘制图像。下面是一个简单的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
def generate_sinusoid(n):
return 10 * np.sin(0.02 * n * np.pi)
def generate_gaussian_noise(n, mean=0, std_dev=1):
return np.random.normal(mean, std_dev, size=n)
def three_point_average(x):
x_avg = [np.mean(x[i:i+3]) for i in range(len(x)-2)]
return x_avg
# 设置参数
n = 100
noise = generate_gaussian_noise(n)
original_signal = generate_sinusoid(n)
noisy_signal = original_signal + noise
# 滑动平均处理
smoothed_signal = three_point_average(noisy_signal)
# 绘制原始信号、噪声、及滑动平均后的信号
plt.figure(figsize=(10, 5))
plt.plot(original_signal, label="Original Signal")
plt.plot(noise, label="Noisy Signal", color='orange')
plt.plot(smoothed_signal, label="Smoothed Signal (3-point avg)", linestyle='--', color='green')
plt.xlabel("Sample Index")
plt.ylabel("Amplitude")
plt.title("Comparison of Original, Noisy and Smoothed Signals")
plt.legend()
plt.show()
# 分析滑动平均器作用
"""
滑动平均器通过取一定窗口内的数据点求平均值,可以有效地平滑掉随机噪声,提高信号的可见性和稳定性。在这个例子中,由于三点平均是在连续三个样本之间计算,所以它能减少噪声的影响,使得正弦波形更清晰地显现出来。
阅读全文