如何随着时间的推移绘制信号的积分?

时间:2013-08-15 03:38:27

标签: python numpy matplotlib scipy

我有一个与时间有关的信号。

我希望随时间绘制积分,时间为x轴,积分值为y轴。

是否有 Python方式这样做?

更具体一点:

我有一个时间数组time和一个信号数组signal。它们具有相同的维度。

我需要将signaltime scipy.integrate.trapz()进行整合。

我希望看到积分随着时间的推移而变化,而不是得到最终积分。

2 个答案:

答案 0 :(得分:9)

请尝试使用scipy.integrate.cumtrapz()

plt.plot(time[:-1], scipy.integrate.cumtrapz(signal, x=time))
plt.show()

它计算包含累积积分值的数组。

http://docs.scipy.org/doc/scipy-0.10.1/reference/generated/scipy.integrate.trapz.html

答案 1 :(得分:3)

稍微好一些的答案使用可选的"initial"参数。这是一个完整的例子:

import scipy.integrate as it
import numpy as np 
import matplotlib.pyplot as plt
t=np.linspace(0,1, 100)
y=t**2
y_int = it.cumtrapz(  y  ,  t, initial=0.0)  # y_int is same size as t
plt.plot(t, y_int)
plt.show()

这可以避免像time[:-1]

这样的奇怪索引