其中:
Ar =脉冲的幅度,等于1.5
fm =故障特征频率等于50赫兹
f =谐振频率等于2000 Hz
F =采样频率。等于10 kHz
betha =衰减参数等于500}
为信号模拟总共20,000个样本
我所做的是:
#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)
获得下一个情节:
(这与xP所需的情节不相似) 所以我的问题是,如果每个人都知道我做错了什么,也没有给出r参数。 迎。
- 编辑 -
#Constants:
A_r=1.5
f=2000
r0=2
F=10**4
f_m=50
b=500
y_plt=[]
y_sum=[]
def y(k,r):
t=(k- r*F/f_m)/F
return A_r*np.sin(2*pi*f*t)*np.exp(-b*t)
for j in np.linspace(0,20000,20000,endpoint=False): #k
for i in np.linspace(0,r0,r0,endpoint=False): #r
y_sum.append(y(j,i))
pene=np.sum(y_sum)
y_plt.append(pene)
plt.figure(1)
plt.plot(np.linspace(0,20000,20000,endpoint=False),y_plt)
plt.show()
现在,我无法弄清楚如何使其成为周期性信号。我认为它与r因子有关,但如果我改变它根本不会改变情节。
答案 0 :(得分:2)
F =采样频率。等于10 kHz
但你写了
F = 10 ** 3
在Python中**
表示取幂,所以这只是10 3 = 1000.也就是说,你在代码中使用了F = 1 kHz。
如果要表达10.0×10 3 ,请使用:
F = 10e3
# ^
A_r * np.sin(2*pi*f*(k-r*F/f_m)/F) * np.exp(-b*(k-r*F/f_m))/F
# ^~~~~~~~~~~~~~~~~~~~~~~~
与你的等式相比
请注意,/ 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)
请注意,您的等式具有Σ r - 它是多个 r 上的波的总和。你确定A_r只是一个值吗?