我想计算一个高斯白噪声信号的RMS幅度。
import matplotlib.pyplot as plt
import numpy as np
mean = 0
std = 1.0
t = 100
def zv(t):
return np.random.normal(mean, std, size = t)
def rms(x):
return np.sqrt(np.mean(zv(x)**2))
plt.plot(zv(t))
plt.plot(rms(t))
zv(t)
的图有效-但我不知道为什么rms(t)
的图只是空白。
您有何评论?
最好的问候
答案 0 :(得分:1)
zv(t)
返回大小为t
的一维数组。结果,当您取平均值时,它是一个单一值。您可以通过打印出rms(t)
的值来验证这一点。如果要为t
沿rms
创建一个图,则需要生成多个蒙特卡洛样本。例如,
def zv(t):
n = 1000
return np.random.normal(mean, std, size = (n, t))
def rms(x):
return np.sqrt(np.mean(zv(x)**2, axis = 0))