Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模拟脉冲信号并绘图_Python_Numpy_Signal Processing - Fatal编程技术网

Python 模拟脉冲信号并绘图

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.

我试着画一个脉冲信号(取自一篇科学论文),脉冲信号的方程是:

其中:

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