我想绘制一个周期赫维赛函数,如下所示:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-2,2,10)
def periodic_function(func, period, offset):
return lambda x: func( ((x - offset) % period ) + offset )
def f(x,xm):
return 1 * (x > xm)
wave = periodic_function(f,4,2)
plt.plot(x,wave)
plt.show()
但问题在于,wave
仅针对 x
的一个值计算 f
。因此,最终的 plt.show() 在维度上并不合理,因为我有 10 个 x 值,而只有 1 个评估的 f 值。我该如何解决这个问题?
最佳答案
mathplotlib.pyplot.plot 函数需要相同长度的值 x 列表和值 y 列表。如果你预先计算 y,这可能是最简单的:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2, 2, 10)
heaviside_step_point = 0 # Example value
def periodic_function(func, period, offset):
return lambda x: func(((x - offset) % period) + offset)
def get_heaviside_step_function(xm):
return lambda x: int(x > xm)
f = periodic_function(get_heaviside_step_function(heaviside_step_point), 4, 2)
y = np.array([f(a) for a in x])
plt.plot(x, y)
plt.show()
现在您可以调整周期函数,使其接受当前 x 并简单地迭代您想要绘制的值。
HTH
关于python - 如何评估 lambda 函数的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252213/