我用derivation.py编写了以下代码
def Interpolation(ableitungWinkel,x_values):
z = medfilt(derivation,3)
diff = abs(derivation-z)
new_smootheddata = np.where(diff>3,z,derivation)
x=np.arange(0,len(x_values[:-2]))
f = interp1d(x,new_smootheddata,kind="linear")
xnew = np.arange(0, len(x_values[:-3]),0.01)
ynew = f(xnew)
s=plt.plot(x, z,"o",xnew, ynew, "-")
return s在我的项目中,也有integration.py。在这个Python文件中,我需要z为这个计算在函数def interpolation中计算的值:
def horizontalAcceleration(strideData):
resultsHorizontal = list()
for i in range (len(strideData)):
yAngle = z
xAcceleration = strideData.to_numpy()[i, 4]
yAcceleration = strideData.to_numpy()[i, 5]
a = ((m.cos(m.radians(yAngle)))*yAcceleration)-((m.sin(m.radians(yAngle)))*xAcceleration)
resultsHorizontal.append(a)
resultsHorizontal.insert(0, 0)
return resultsHorizontal正如您所看到的,我已经将z添加到函数def horizontalAcceleration应该到达的位置。为了在那里使用z,我尝试了以下方法:from derivation import z
但这不管用。因为这样我就得到了错误:ImportError:无法从“派生”导入名称'z‘
有谁知道我怎么能解决这个问题吗?谢谢你帮我。
发布于 2020-12-07 21:07:22
我认为您的误解是因为您认为一个函数就像一个已经运行并修改了a.global状态的脚本。功能不是这样的。函数是对其输入执行的一系列操作(忽略闭包一分钟),它返回一些结果。您可以多次调用它,但是如果不调用它,它就不会执行。一旦它停止执行,它的所有变量就会超出作用域。
不过,您可以导入和调用一个函数。因此,您可以更改返回类型的插值,以返回所有您需要的其他地方。例如。
def Interpolation(...):
...
return {'z': z, 's': s}然后在某个地方导入该函数,调用它,获取所需的所有数据,然后将其传递给其他函数。
import Interpolation from derivation
# get z and s in a dict result
result = Interpolation(...)
# pass s as well as the other argument to your other function
horizontalAcceleration(strideData, result['s'])https://stackoverflow.com/questions/65189165
复制相似问题