【发布时间】:2021-04-30 01:18:25
【问题描述】:
我有以下np.array,它描述了一个矩形波。我想将它转换为可调用函数,并带有一个连续的参数。 np.array 是:
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import seed
from numpy.random import rand
def piecewise_control( off_times,amp_inj, period_inj ):
def select(T):
return lambda t: (-T/2 <= t) & (t < T/2)
def pulse_train(t, at, shape):
return np.sum(shape(t - at[:,np.newaxis]), axis=0)
for i in range(1,len(off_times)):
off_times[i] += off_times[i-1] + period_inj
return amp_inj*pulse_train(t,off_times,shape=select(period_inj))
t=np.linspace(0,100,10000)
off_times = 10*rand(10)
period_inj = 1
amp_inj = 1
control = piecewise_control( off_times,amp_inj, period_inj )
plt.plot(t,control)
plt.show()
这个answer 启发了我。
剧情如下:
问题是:我们能否将数组control转换为一个具有连续参数的函数?
当然,如果我们这样做了:
def ccontrol(t, control):
return control[t]
不幸的是,我们会得到一个只依赖于整数的函数。
【问题讨论】:
-
你指的是哪个浮动变量?
-
@Tarik 抱歉,我删除了这个词,因为它具有误导性。我想要像
sint(t)这样的函数一样可调用的东西。 -
你想把哪个数组转成函数?能否提供函数签名(参数)和预期回报?
-
@Tarik 数组是
control,它是通过函数piecewise_control定义的。我想将此数组作为为每个参数定义的可调用函数。我认为插值技术或密集输出将是一个关键点。
标签: python function numpy interpolation transformation