半正弦函数的简单代码

时间:2018-07-12 14:53:15

标签: python-2.7 numpy

我正在尝试编写一段简单的代码来定义振动筛的半正弦脉冲,然后转换为冲击响应。我只是想在一个间隔内定义一个Sine函数,而在该间隔外,该函数需要为零:

Time = np.linspace(0,0.01,110)
Amplitude = 70
Period = 0.002
Function = 0.0

if Time.all() <= Period:
    Function = Amplitude * np.sin(np.pi * Time/Period) 
else:
    Function = 0.0

问题在于,Python似乎忽略了if语句,并为我绘制了一个完整的Sine函数,直到获得所有Time值为止。

很抱歉,如果这是一个非常新手的问题,但我找不到解决方案。

非常感谢。

1 个答案:

答案 0 :(得分:0)

Time.all()的输出为False,您如何将其与<= 0.002进行比较?您要么需要遍历数组(不建议使用),要么使用布尔索引掩码将零应用于您的Function

Time = np.linspace(0, 0.01, 110)
Amplitude = 70
Period = 0.002
Function = 0.0

Function = Amplitude * np.sin(np.pi * Time / Period)
# apply setting to zero where the boolean mask is True
# the boolean mask is True, where the condition Time > Period is True
Function[Time > Period] = 0.

此外,您的代码中还有一些“样式”问题。根据{{​​3}},仅类应以大写开头。变量应始终为小写。这就是在您的IDE中(可能)代码颜色异常奇怪的原因。