模拟脉冲信号和绘图

时间:2016-09-10 18:05:17

标签: python numpy signal-processing

我试图绘制一个冲动信号(取自科学论文),脉冲信号的等式是: Impact formula

其中:

Ar =脉冲的幅度,等于1.5

fm =故障特征频率等于50赫兹

f =谐振频率等于2000 Hz

F =采样频率。等于10 kHz

betha =衰减参数等于500}

为信号模拟总共20,000个样本

模拟信号的对应图应如下所示: enter image description here

我所做的是:

#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)

获得下一个情节:

enter image description here plt.show()

(这与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因子有关,但如果我改变它根本不会改变情节。

Simple Impulse

1 个答案:

答案 0 :(得分:2)

1

  

F =采样频率。等于10 kHz

但你写了

F = 10 ** 3

在Python中**表示取幂,所以这只是10 3 = 1000.也就是说,你在代码中使用了F = 1 kHz。

如果要表达10.0×10 3 ,请使用:

F = 10e3
#     ^

2

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)

3

请注意,您的等式具有Σ r - 它是多个 r 上的波的总和。你确定A_r只是一个值吗?