我正在尝试编写一段简单的代码来定义振动筛的半正弦脉冲,然后转换为冲击响应。我只是想在一个间隔内定义一个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值为止。
很抱歉,如果这是一个非常新手的问题,但我找不到解决方案。
非常感谢。
答案 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中(可能)代码颜色异常奇怪的原因。