Python 模拟脉冲信号并绘图
我试着画一个脉冲信号(取自一篇科学论文),脉冲信号的方程是: 其中: Ar=脉冲的振幅,等于1.5 fm=故障特征频率等于50 Hz f=谐振频率等于2000 Hz F=采样频率等于10 kHz betha=衰减参数等于500} 对信号总共模拟了20000个样本 模拟信号的对应图应如下所示: 我所做的是:Python 模拟脉冲信号并绘图,python,numpy,signal-processing,Python,Numpy,Signal Processing,我试着画一个脉冲信号(取自一篇科学论文),脉冲信号的方程是: 其中: Ar=脉冲的振幅,等于1.5 fm=故障特征频率等于50 Hz f=谐振频率等于2000 Hz F=采样频率等于10 kHz betha=衰减参数等于500} 对信号总共模拟了20000个样本 模拟信号的对应图应如下所示: 我所做的是: #Constants: A_r=1.5 f=2000 r=-0.01 F=10**3 f_m=50 b=500 y_plt=[] def y(k): return A_r*np.
#Constants:
A_r=1.5
f=2000
r=-0.01
F=10**3
f_m=50
b=500
y_plt=[]
def y(k):
return A_r*np.sin(2*pi*f*(k-r*F/f_m)/F)*np.exp(-b*(k-r*F/f_m))/F
x=np.linspace(0,0.2,20000)
for i in x:
y_plt.append(y(i))
fig=plt.figure(1)
ax=plt.subplot(111)
ax.plot(x,y_plt)
获取下一个绘图:
plt.show()
(与所需的绘图不相似)
所以我的问题是,如果每个人都知道我做错了什么,也没有给出r参数
--编辑--
现在,我搞不懂的是如何使它成为一个周期性信号。我认为它与r因子有关,但如果我改变它,它根本不会改变绘图
1。
F=采样频率等于10 kHz
但是你写了
F = 10 ** 3
在Python中,**
平均求幂,所以这只是103=1000。也就是说,您在代码中使用了F=1 kHz
如果要表示10.0×103,请使用:
2.
与你的方程式相比
请注意,/F
部分应该位于np.exp
的内部,但您已经将其放在了外部
同一行中有太多括号,很容易出错。您最好考虑中间变量,使其更易于阅读:
def y(k):
t = (k - r*F/f_m) / F
return A_r * np.sin(2*pi*f*t) * np.exp(-b*t)
3.
请注意,您的等式有一个∑r-它是多个r上的波的总和。您确定A\u r只是一个值吗?1。
F=采样频率等于10 kHz
但是你写了
F = 10 ** 3
在Python中,**
平均求幂,所以这只是103=1000。也就是说,您在代码中使用了F=1 kHz
如果要表示10.0×103,请使用:
2.
与你的方程式相比
请注意,/F
部分应该位于np.exp
的内部,但您已经将其放在了外部
同一行中有太多括号,很容易出错。您最好考虑中间变量,使其更易于阅读:
def y(k):
t = (k - r*F/f_m) / F
return A_r * np.sin(2*pi*f*t) * np.exp(-b*t)
3.
请注意,您的等式有一个∑r-它是多个r上的波的总和。你确定A\u r只是一个值吗?我做了更正,谢谢你的好眼力。Ar是一个常数,等于1.5。我没有考虑总数(很好的一点)。我怎样才能把这笔钱加起来。作为函数的一部分?@tomzko:使用for循环,比如
total=0↵ 对于……中的r:↵ 总计+=…
。但是你需要知道r的有效范围。我做了更正,谢谢你的好眼力。Ar是一个常数,等于1.5。我没有考虑总数(很好的一点)。我怎样才能把这笔钱加起来。作为函数的一部分?@tomzko:使用for循环,比如total=0↵ 对于……中的r:↵ 总计+=…
。但是你需要知道r的有效范围。
def y(k):
t = (k - r*F/f_m) / F
return A_r * np.sin(2*pi*f*t) * np.exp(-b*t)