@
sl797 @
hailaz keep 的
伪代码( Ghidra 反编译,已整理)
c
// 1. 由配速估算心率(无心率设备时)
hr = estimateHR(speed);
// 2. 心率夹取到 [60, min(254, 220−年龄)]
if (hr < 254 && hr <= 220 - age && hr >= 60) keep = hr;
else keep = 65;
// 3. 分性别计算
if (sex == MALE) {
bmr = 13.75*W + 66.5 + 5.003*H; // Harris-Benedict 男
activity = (0.6309*hr - 55.0969 + 0.1988*W + 0.2017*A) / 4.184; // Keytel 男
ageTerm = 6.775*A;
} else {
bmr = 9.563*W + 655.1 + 1.85*H; // Harris-Benedict 女
activity = (0.4472*hr - 20.4022 - 0.1263*W + 0.074*A) / 4.184; // Keytel 女
ageTerm = 4.676*A;
}
restPerSec = ((bmr - ageTerm) / 1440) / 60;
rate = max(activity/60, restPerSec); // 不低于基础代谢
total += (t - tPrev) * rate; // 按时间积分
Keytel 方程 + Harris-Benedict ,是正经的运动生理学模型。