@sh.add_function(dsp, outputs=['speed_velocity_ratios'], weight=5)
@sh.add_function(
dsp, inputs=['gears', 'velocities', 'engine_speeds_out', 'stop_velocity'],
outputs=['speed_velocity_ratios'], weight=10
)
def identify_speed_velocity_ratios(
gears, velocities, gear_box_speeds_in, stop_velocity):
"""
Identifies speed velocity ratios from gear vector [h*RPM/km].
:param gears:
Gear vector [-].
:type gears: numpy.array
:param velocities:
Velocity vector [km/h].
:type velocities: numpy.array
:param gear_box_speeds_in:
Gear box speed vector [RPM].
:type gear_box_speeds_in: numpy.array
:param stop_velocity:
Maximum velocity to consider the vehicle stopped [km/h].
:type stop_velocity: float
:return:
Speed velocity ratios of the gear box [h*RPM/km].
:rtype: dict
"""
with np.errstate(divide='ignore', invalid='ignore'):
ratios = gear_box_speeds_in / velocities
ratios[velocities < stop_velocity] = 0
svr = {k: co2_utl.reject_outliers(ratios[gears == k])[0]
for k in range(1, int(max(gears)) + 1)
if k in gears}
svr[0] = dfl.INF
return svr