假设我有两个函数
f(t) = sin(t)
以及
g(t) = cost(t)
我知道f和g的卷积是
0.5 * t * sin(t)
(用手here)和下面的合题:
import sympy as sp
t, tau = sp.symbols('t tau')
sol = sp.integrate(sp.sin(t - tau) * sp.cos(tau), (tau, 0, t))
print(sol)
# t*sin(t)/2
用scipy的convolve
如何得到这个结果?目前我得到了两种截然不同的输出:
^{pr2}$
Tags:
首先,
signal.convolve
方法执行求和。为了使它近似积分,你需要乘以dt,步长。在第二,产生0.5*t*sin(t)的积分只涉及从0开始的值:将f(tau)*g(t-tau)与tau从0到t进行积分。要用离散卷积来模拟这一点,请从0开始计算linspace,并选择mode='full',然后从开始将结果截断到大小。这样,卷积的第一个元素只涉及很少的项,所以它们基本上是从0开始的。在
得到负的部分,所以相同的东西,但是用
t = -np.linspace(0, 10, n)
。注意t现在应该倒转,仍然从0开始-就像积分一样。在相关问题 更多 >
编程相关推荐