8

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

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

有没有任何Python 方法可以做到这一点?

更加具体:

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

我需要signaltime.scipy.integrate.trapz()

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

4

2 回答 2

10

尝试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

于 2013-08-15T04:51:32.943 回答
5

稍微好一点的答案使用可选"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]

于 2017-08-04T19:50:33.303 回答