libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::FloatEncoder< Bits, Scalar > Class Template Reference

浮点数编码器,将浮点值映射到定长无符号整数。 A generic float encoder mapping a float value to N-bit unsigned integer. More...

#include <float_encoder.hpp>

Public Member Functions

 FloatEncoder (Scalar min, Scalar max)
 构造函数,设置映射区间 [min, max]。 Constructor specifying the float range [min, max].
 
uint32_t Encode (Scalar value) const
 编码:将浮点数映射为无符号整数。 Encodes a float to unsigned integer in range [0, 2^Bits - 1].
 
Scalar Decode (uint32_t encoded) const
 解码:将无符号整数还原为浮点值。 Decodes an unsigned integer to float.
 

Static Public Member Functions

static constexpr uint32_t MaxInt ()
 获取最大可编码的整数值。 Returns the maximum encodable unsigned integer.
 

Private Attributes

Scalar min_
 浮点区间最小值
 
Scalar max_
 浮点区间最大值
 
Scalar range_
 区间范围(max - min)
 

Detailed Description

template<int Bits, typename Scalar = float>
class LibXR::FloatEncoder< Bits, Scalar >

浮点数编码器,将浮点值映射到定长无符号整数。 A generic float encoder mapping a float value to N-bit unsigned integer.

用于将连续区间 [min, max] 映射到整数区间 [0, 2^bits - 1], 可用于 IMU 数据、传感器值、CAN 打包等场景。

Template Parameters
Bits使用的整数位数,例如 21 表示使用 21-bit 无符号整数。
Scalar浮点数类型,默认为 float。

Definition at line 21 of file float_encoder.hpp.

Constructor & Destructor Documentation

◆ FloatEncoder()

template<int Bits, typename Scalar = float>
LibXR::FloatEncoder< Bits, Scalar >::FloatEncoder ( Scalar min,
Scalar max )
inline

构造函数,设置映射区间 [min, max]。 Constructor specifying the float range [min, max].

Parameters
min最小浮点值。Minimum float value.
max最大浮点值。Maximum float value.

Definition at line 39 of file float_encoder.hpp.

39: min_(min), max_(max), range_(max - min) {}
Scalar range_
区间范围(max - min)
Scalar min_
浮点区间最小值
Scalar max_
浮点区间最大值
constexpr auto max(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最大值
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值

Member Function Documentation

◆ Decode()

template<int Bits, typename Scalar = float>
Scalar LibXR::FloatEncoder< Bits, Scalar >::Decode ( uint32_t encoded) const
inline

解码:将无符号整数还原为浮点值。 Decodes an unsigned integer to float.

Parameters
encoded编码后的整数。Encoded unsigned integer.
Returns
对应的浮点数值。Decoded float value.

Definition at line 62 of file float_encoder.hpp.

63 {
64 Scalar norm = static_cast<Scalar>(encoded) / MaxInt();
65 return min_ + norm * range_;
66 }
static constexpr uint32_t MaxInt()
获取最大可编码的整数值。 Returns the maximum encodable unsigned integer.

◆ Encode()

template<int Bits, typename Scalar = float>
uint32_t LibXR::FloatEncoder< Bits, Scalar >::Encode ( Scalar value) const
inline

编码:将浮点数映射为无符号整数。 Encodes a float to unsigned integer in range [0, 2^Bits - 1].

Parameters
value输入的浮点数值。Input float value.
Returns
对应的整数编码值。Encoded unsigned integer.

Definition at line 48 of file float_encoder.hpp.

49 {
50 Scalar clamped = std::fmin(std::fmax(value, min_), max_);
51 Scalar norm = (clamped - min_) / range_;
52 return static_cast<uint32_t>(std::round(norm * MaxInt()));
53 }

◆ MaxInt()

template<int Bits, typename Scalar = float>
static constexpr uint32_t LibXR::FloatEncoder< Bits, Scalar >::MaxInt ( )
inlinestaticconstexpr

获取最大可编码的整数值。 Returns the maximum encodable unsigned integer.

Definition at line 30 of file float_encoder.hpp.

30{ return (1u << Bits) - 1; }

Field Documentation

◆ max_

template<int Bits, typename Scalar = float>
Scalar LibXR::FloatEncoder< Bits, Scalar >::max_
private

浮点区间最大值

Definition at line 70 of file float_encoder.hpp.

◆ min_

template<int Bits, typename Scalar = float>
Scalar LibXR::FloatEncoder< Bits, Scalar >::min_
private

浮点区间最小值

Definition at line 69 of file float_encoder.hpp.

◆ range_

template<int Bits, typename Scalar = float>
Scalar LibXR::FloatEncoder< Bits, Scalar >::range_
private

区间范围(max - min)

Definition at line 71 of file float_encoder.hpp.


The documentation for this class was generated from the following file: