为了能够测量我的模数转换器的性能,我想对任意信号进行采样和归一化。创建的信号必须具有RMS值的噪声,并且我必须绘制信号的频谱功率密度。
所以我写了这段代码(我不知道这行不行,我是个初学者),我想知道为什么我在画的图上什么也看不见。
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()
发布于 2018-11-21 13:58:31
因为这就是您(无意中)告诉matplotlib要做的。
>>> x
array([], dtype=float64)
x
是一个空数组,所以绘制它不会绘制任何内容。它是空的,因为t
也是一个空数组。我不确定您的参数是什么,但是arange
通常应该只与整数值一起使用,并且步长(第三个参数)应该小于停止值(第二个参数)。对于生成浮点数序列,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()
https://stackoverflow.com/questions/53409918
复制相似问题