为了能够测量我的模数转换器的性能,我想对任意信号进行采样和归一化。创建的信号必须具有均方根值的噪声,我必须绘制信号的频谱功率密度。
所以我写了这段代码(我不知道我是初学者吗),我想知道为什么我在绘制的图形上什么都看不到。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib notebook
%matplotlib notebook
StopTime = 0.01
N = 1024
Te = 1.0
Fe = 1.0/Te
t = np.arange(0,Te,StopTime-Te)
f = Fe/2
x = np.sin(2*np.pi*f*t*N)
plt.plot(x)
plt.show()
答案 0 :(得分:0)
因为那是您(无意间)告诉matplotlib要做的。
>>> x
array([], dtype=float64)
x
是一个空数组,因此对其进行打印不会绘制任何内容。它是空的,因为t
也是一个空数组。我不确定您的参数是什么,但是arange
通常仅应与整数值一起使用,并且step(第三个参数)应小于停止值(第二个参数)。对于生成浮点序列,np.linspace
更好。
解决此问题(并根据采样频率来生成信号,因为我不确定您的参数是什么),生成具有噪声的信号的代码是
import matplotlib.pyplot as plt
import numpy as np
## Parameters used
StopTime = 0.5 # End of signal
Fs = 1024 # Sampling rate
f = 30 # Frequency of simulated signal
## Generate sample times
t = np.linspace(0,StopTime, StopTime*Fs)
## Generate signal
x = np.sin(2*np.pi*t*f)
## Add noise to signal
noise = np.random.randn(len(x))
print('rms noise value:', sqrt(mean(randn(10000)**2)))
xn = x + noise
plt.plot(t, x)
plt.plot(t, xn)
plt.show()