| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
命名空间 | 类 | 类型定义 | 枚举 | 函数 | 变量
基础数学库
数学、算法模块

提供了 STL 中没有的常量定义、变换、广义位移计算、常用数学公式、数学模型算法的实现 更多...

基础数学库 的协作图:

## 命名空间
namespace | rm::numeric_literals

## 类
class | rm::EwTopsis
| 熵权 TOPSIS 算法 更多...
class | rm::Munkres
| KM 算法求解器 更多...

## 类型定义
using | cv::Matx11f = Matx<float, 1, 1>
using | cv::Matx11d = Matx<double, 1, 1>
using | cv::Matx51f = Matx<float, 5, 1>
using | cv::Matx15f = Matx<float, 1, 5>
using | cv::Matx51d = Matx<double, 5, 1>
using | cv::Matx15d = Matx<double, 1, 5>
using | cv::Matx55f = Matx<float, 5, 5>
using | cv::Matx55d = Matx<double, 5, 5>

## 枚举
enum | rm::AngleMode : bool { rm::RAD = true , rm::DEG = false }
| 角度制式 更多...
enum class | rm::CalPlane : uint8_t { rm::CalPlane::xyz = 0 , rm::CalPlane::xOy = 1 , rm::CalPlane::xOz = 2 , rm::CalPlane::yOz = 3 }
| 计算所在平面 更多...
enum class | rm::EulerAxis : int { rm::EulerAxis::X = 0 , rm::EulerAxis::Y = 1 , rm::EulerAxis::Z = 2 }
| 欧拉角转轴枚举 更多...

## 函数
constexpr double | rm::numeric_literals::operator""_PI (long double num)
constexpr double | rm::numeric_literals::operator""_PI (long long unsigned num)
constexpr double | rm::numeric_literals::operator""_to_rad (long double num)
constexpr double | rm::numeric_literals::operator""_to_rad (long long unsigned num)
constexpr double | rm::numeric_literals::operator""_to_deg (long double num)
constexpr double | rm::numeric_literals::operator""_to_deg (long long unsigned num)
template<typename Tp>
constexpr Tp | rm::operator+ (Tp val, const cv::Matx< Tp, 1, 1 > &mat)
template<typename Tp>
constexpr cv::Matx< Tp, 1, 1 > | rm::operator+ (const cv::Matx< Tp, 1, 1 > &mat, Tp val)
template<typename Tp>
constexpr Tp | rm::operator- (Tp val, const cv::Matx< Tp, 1, 1 > &mat)
template<typename Tp>
constexpr cv::Matx< Tp, 1, 1 > | rm::operator- (const cv::Matx< Tp, 1, 1 > &mat, Tp val)
template<typename Tp>
constexpr Tp | rm::deg2rad (Tp deg)
| 角度转换为弧度
template<typename Tp>
constexpr Tp | rm::rad2deg (Tp rad)
| 弧度转换为角度
template<typename Tp1, typename Tp2>
constexpr auto | rm::getDistance (const cv::Point_< Tp1 > &pt_1, const cv::Point_< Tp2 > &pt_2)
| 获取距离
template<typename Tp1, typename Tp2>
constexpr auto | rm::getDistance (const cv::Vec< Tp1, 2 > &vec_1, const cv::Vec< Tp2, 2 > &vec_2)
| 获取距离
template<typename Tp1, typename Tp2>
constexpr auto | rm::getDistance (const cv::Point3_< Tp1 > &pt_1, const cv::Point3_< Tp2 > &pt_2, CalPlane calplane=CalPlane::xyz)
| 获取距离
template<typename Tp1, typename Tp2>
constexpr auto | rm::getDistance (const cv::Vec< Tp1, 3 > &vec_1, const cv::Vec< Tp2, 3 > &vec_2, CalPlane calplane=CalPlane::xyz)
| 获取距离
template<typename Tp1, typename Tp2>
constexpr auto | rm::getDistance (const cv::Vec< Tp1, 4 > &line, const cv::Point_< Tp2 > &pt, bool direc=true)
| 点到直线距离，其中 \(P=(x_0,y_0)\) 到直线 \(l:Ax+By+C=0\) 距离公式为
template<typename Tp1, typename Tp2>
constexpr auto | rm::getHAngle (const cv::Point_< Tp1 > &start, const cv::Point_< Tp2 > &end, AngleMode mode=RAD)
| 获取与水平方向的夹角，以平面直角坐标系 \(x\) 轴为分界线， 逆时针 为正方向，范围: \((-180°,180°]\) ，默认返回弧度制
template<typename Tp1, typename Tp2>
constexpr auto | rm::getVAngle (const cv::Point_< Tp1 > &start, const cv::Point_< Tp2 > &end, AngleMode mode=RAD)
| 获取与垂直方向的夹角，以平面直角坐标系 \(y\) 轴为分界线， 顺时针 为正方向，范围: \((-180°,180°]\) ，默认返回弧度制
template<typename Tp>
constexpr Tp | rm::getDeltaAngle (Tp angle_1, Tp angle_2)
| 求两个角之间的夹角
template<typename Tp>
constexpr Tp | rm::sec (Tp x)
| 正割 \(\sec(x)\)
template<typename Tp>
constexpr Tp | rm::csc (Tp x)
| 余割 \(\csc(x)\)
template<typename Tp>
constexpr Tp | rm::cot (Tp x)
| 余切 \(\cot(x)\)
template<typename Tp>
constexpr Tp | rm::sgn (Tp x)
| 符号函数
template<typename Tp>
constexpr Tp | rm::sigmoid (Tp x, Tp k=1, Tp Kp=1, Tp mu=0)
| 计算 sigmoid(x) 在某一点的函数值
template<typename ForwardIterator>
constexpr std::iterator_traits< ForwardIterator >::value_type | rm::mean (ForwardIterator first, ForwardIterator last)
| 计算均值
template<typename ForwardIterator>
constexpr std::iterator_traits< ForwardIterator >::value_type | rm::variance (ForwardIterator first, ForwardIterator last)
| 计算方差
template<typename Tp>
constexpr Tp | rm::cross2D (const cv::Vec< Tp, 2 > &a, const cv::Vec< Tp, 2 > &b)
| 平面向量外积
template<typename Tp>
constexpr Tp | rm::cross2D (const cv::Point_< Tp > &a, const cv::Point_< Tp > &b)
| 平面向量外积
template<typename ForwardIterator>
std::iterator_traits< ForwardIterator >::value_type | rm::calculateModeNum (ForwardIterator first, ForwardIterator last)
| 在指定范围内寻找众数，时间复杂度 O(N)
cv::Point2f | rm::calculateRelativeAngle (const cv::Matx33f &cameraMatrix, cv::Point2f center)
| 计算相机中心与目标中心之间的相对角度
cv::Point2f | rm::calculateRelativeCenter (const cv::Matx33f &cameraMatrix, cv::Point2f angle)
| 计算目标中心在像素坐标系下的坐标
cv::Vec2f | rm::cameraConvertToPixel (const cv::Matx33f &cameraMatrix, const cv::Matx51f &distCoeffs, const cv::Vec3f &center3d)
| 计算 3D 目标点在像素坐标系下的坐标
cv::Point2f | rm::cameraConvertToPixel (const cv::Matx33f &cameraMatrix, const cv::Matx51f &distCoeffs, const cv::Point3f &center3d)
| 计算 3D 目标点在像素坐标系下的坐标
template<typename Tp>
cv::Matx< Tp, 3, 3 > | rm::euler2Mat (Tp val, EulerAxis axis)
| 欧拉角转换为旋转矩阵

## 变量
constexpr float | rm::FLOAT_MAX = std::numeric_limits<float>::max()
| float 最大值
constexpr float | rm::FLOAT_MIN = std::numeric_limits<float>::min()
| float 最小值
constexpr double | rm::PI = 3.14159265358979323
| 圆周率: \(\pi\)
constexpr double | rm::e = 2.7182818459045
| 自然对数底数: \(e\)
constexpr double | rm::SQRT_2 = 1.4142135623731
| 根号 2: \(\sqrt2\)

## 详细描述

提供了 STL 中没有的常量定义、变换、广义位移计算、常用数学公式、数学模型算法的实现

- 常量定义包括了 \(\pi\)、 \(e\)、 \(\sqrt2\) 等常用数学常量的定义，但在未来可能会移除
- 变换包括了弧角转换、坐标变换的内容
- 广义位移计算包括了平面向量外积、平面欧式距离、空间欧式距离、点到直线距离等算法的实现
- 常用数学公式包括了正割、余割、余切、符号函数、sigmoid 函数等的实现
- 数学模型算法包括了熵权 TOPSIS、KM 算法等算法的实现

## 类型定义说明

## ◆ Matx11d

using cv::Matx11d = Matx<double, 1, 1>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx11f

using cv::Matx11f = Matx<float, 1, 1>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx15d

using cv::Matx15d = Matx<double, 1, 5>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx15f

using cv::Matx15f = Matx<float, 1, 5>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx51d

using cv::Matx51d = Matx<double, 5, 1>

`#include <rmvl/algorithm/math.hpp>`

示例
  samples/camera/mv/sample_mv_manual_calib.cpp.

## ◆ Matx51f

using cv::Matx51f = Matx<float, 5, 1>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx55d

using cv::Matx55d = Matx<double, 5, 5>

`#include <rmvl/algorithm/math.hpp>`

## ◆ Matx55f

using cv::Matx55f = Matx<float, 5, 5>

`#include <rmvl/algorithm/math.hpp>`

## 枚举类型说明

## ◆ AngleMode

enum rm::AngleMode : bool

`#include <rmvl/algorithm/math.hpp>`

角度制式

枚举值
RAD | 弧度制
DEG | 角度制

## ◆ CalPlane

enum class rm::CalPlane : uint8_t
| strong

`#include <rmvl/algorithm/math.hpp>`

计算所在平面

枚举值
xyz | 三维空间
xOy | xOy平面
xOz | xOz平面
yOz | yOz平面

## ◆ EulerAxis

enum class rm::EulerAxis : int
| strong

`#include <rmvl/algorithm/transform.hpp>`

欧拉角转轴枚举

枚举值
X Python: rm.EulerAxis.X | X 轴
Y Python: rm.EulerAxis.Y | Y 轴
Z Python: rm.EulerAxis.Z | Z 轴

## 函数说明

## ◆ calculateModeNum()

template<typename ForwardIterator>

std::iterator_traits< ForwardIterator >::value_type rm::calculateModeNum | ( | ForwardIterator | first,
|  | ForwardIterator | last )

`#include <rmvl/algorithm/math.hpp>`

在指定范围内寻找众数，时间复杂度 O(N)

模板参数

  ForwardIterator | 前向迭代器

参数

  [in] | first | 起始迭代器
  [in] | last | 终止迭代器

返回
  众数

## ◆ calculateRelativeAngle()

cv::Point2f rm::calculateRelativeAngle | ( | const cv::Matx33f & | cameraMatrix,
|  | cv::Point2f | center )

Python:
| rm.calculateRelativeAngle( | m, p | ) -> | angle

`#include <rmvl/algorithm/transform.hpp>`

计算相机中心与目标中心之间的相对角度

注解
  公式推导参考函数 calculateRelativeCenter() ，现直接给出结果

  \[\begin{bmatrix}\tan{\theta_{\text{yaw}}}\\\tan{\theta_{\text{pitch}}} \\1\end{bmatrix}=\begin{bmatrix}f_x&0&u_0\\0&f_y&v_0\\0&0&1\end{bmatrix}^{-1}\begin{bmatrix}u\\v\\1\end{bmatrix}\]

参数

  [in] | cameraMatrix | 相机内参矩阵
  [in] | center | 像素坐标系下的目标中心

返回
  相对角度，目标在图像右方，point.x 为正，目标在图像下方，point.y 为正

## ◆ calculateRelativeCenter()

cv::Point2f rm::calculateRelativeCenter | ( | const cv::Matx33f & | cameraMatrix,
|  | cv::Point2f | angle )

Python:
| rm.calculateRelativeCenter( | m, angle | ) -> | center

`#include <rmvl/algorithm/transform.hpp>`

计算目标中心在像素坐标系下的坐标

注解
  由针孔相机模型中的相似三角形关系推出下列公式，其中 \((u, v)\) 为像素坐标系下的坐标， \((X, Y, Z)\) 为相机坐标系下的坐标

  \[u=f_x\frac XZ+u_0=f_x\tan{\theta_{\text{yaw}}}+u_0\]

  \[v=f_y\frac YZ+v_0=f_y\tan{\theta_{\text{pitch}}}+v_0\]

  写成矩阵相乘的方式：

  \[\begin{bmatrix}u \\v\\1\end{bmatrix}=\frac1Z\begin{bmatrix}f_x&0&u_0\\0&f_y&v_0\\0&0&1\end{bmatrix}\begin{bmatrix}X\\Y\\Z\end{bmatrix}=\begin{bmatrix}f_x&0& u_0\\0&f_y&v_0\\0&0&1\end{bmatrix}\begin{bmatrix}\tan{\theta_{\text{yaw}}}\\\tan{\theta_{\text{pitch}}}\\1\end{bmatrix}\]

  一般来说， \(\begin {bmatrix}\tan{\theta_{\text{yaw}}}&\tan{\theta_{\text{pitch}}}&1\end{bmatrix}^T\) 被称为 归一化投影

参数

  [in] | cameraMatrix | 相机内参矩阵
  [in] | angle | 目标中心与相机中心的相对角度，即 \(\theta_{\text{yaw}}\) 和 \(\theta_{\text{pitch}}\)

返回
  目标中心在像素坐标系下的坐标

## ◆ cameraConvertToPixel() [1/2]

cv::Point2f rm::cameraConvertToPixel | ( | const cv::Matx33f & | cameraMatrix,
|  | const cv::Matx51f & | distCoeffs,
|  | const cv::Point3f & | center3d )
| inline

Python:
| rm.cameraConvertToPixel( | m, coeffs, p3d | ) -> | pixel

`#include <rmvl/algorithm/transform.hpp>`

计算 3D 目标点在像素坐标系下的坐标

参数

  [in] | cameraMatrix | 相机内参矩阵
  [in] | distCoeffs | 相机畸变参数
  [in] | center3d | 目标点在相机坐标系下的坐标

返回
  目标点在像素坐标系下的坐标

函数调用图:

## ◆ cameraConvertToPixel() [2/2]

cv::Vec2f rm::cameraConvertToPixel | ( | const cv::Matx33f & | cameraMatrix,
|  | const cv::Matx51f & | distCoeffs,
|  | const cv::Vec3f & | center3d )

Python:
| rm.cameraConvertToPixel( | m, coeffs, p3d | ) -> | pixel

`#include <rmvl/algorithm/transform.hpp>`

计算 3D 目标点在像素坐标系下的坐标

参数

  [in] | cameraMatrix | 相机内参矩阵
  [in] | distCoeffs | 相机畸变参数
  [in] | center3d | 目标点在相机坐标系下的坐标

返回
  目标点在像素坐标系下的坐标

## ◆ cot()

template<typename Tp>

Tp rm::cot | ( | Tp | x | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

余切 \(\cot(x)\)

模板参数

  Tp | 变量类型

参数

  [in] | x | 自变量

返回
  cot(x)

## ◆ cross2D() [1/2]

template<typename Tp>

Tp rm::cross2D | ( | const cv::Point_< Tp > & | a,
|  | const cv::Point_< Tp > & | b )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

平面向量外积

模板参数

  Tp | Point_数据类型

参数

  [in] | a | 向量 A
  [in] | b | 向量 B

返回
  外积，若 \(\texttt{res} = 0\) 则共线， \(\texttt{res} > 0\) 则方向向内， \(\texttt{res} < 0\) 则方向向外

## ◆ cross2D() [2/2]

template<typename Tp>

Tp rm::cross2D | ( | const cv::Vec< Tp, 2 > & | a,
|  | const cv::Vec< Tp, 2 > & | b )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

平面向量外积

模板参数

  Tp | 向量数据类型

参数

  [in] | a | 向量 A
  [in] | b | 向量 B

返回
  外积，若 \(\texttt{res} = 0\) 则共线， \(\texttt{res} > 0\) 则方向向内， \(\texttt{res} < 0\) 则方向向外

## ◆ csc()

template<typename Tp>

Tp rm::csc | ( | Tp | x | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

余割 \(\csc(x)\)

模板参数

  Tp | 变量类型

参数

  [in] | x | 自变量

返回
  csc(x)

## ◆ deg2rad()

template<typename Tp>

Tp rm::deg2rad | ( | Tp | deg | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

角度转换为弧度

模板参数

  Tp | 变量类型

参数

  [in] | deg | 角度

返回
  弧度

## ◆ euler2Mat()

template<typename Tp>

cv::Matx< Tp, 3, 3 > rm::euler2Mat | ( | Tp | val,
|  | EulerAxis | axis )
| inline

`#include <rmvl/algorithm/transform.hpp>`

欧拉角转换为旋转矩阵

模板参数

  Tp | 数据类型

参数

  [in] | val | 角度数值（弧度制）
  [in] | axis | 转轴

返回
  Matx 格式的旋转矩阵

## ◆ getDeltaAngle()

template<typename Tp>

Tp rm::getDeltaAngle | ( | Tp | angle_1,
|  | Tp | angle_2 )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

求两个角之间的夹角

模板参数

  Tp | 角度的数据类型

参数

  [in] | angle_1 | 第 1 个角度
  [in] | angle_2 | 第 2 个角度

返回
  夹角，角度的范围是 \((-180°,180°]\)

## ◆ getDistance() [1/5]

template<typename Tp1, typename Tp2>

auto rm::getDistance | ( | const cv::Point3_< Tp1 > & | pt_1,
|  | const cv::Point3_< Tp2 > & | pt_2,
|  | CalPlane | calplane = CalPlane::xyz )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取距离

模板参数

  Tp1 | 空间点 1 的数据类型
  Tp2 | 空间点 2 的数据类型

参数

  [in] | pt_1 | 起始点
  [in] | pt_2 | 终止点
  [in] | calplane | 要计算的距离所在的平面

返回
  空间欧式距离

## ◆ getDistance() [2/5]

template<typename Tp1, typename Tp2>

auto rm::getDistance | ( | const cv::Point_< Tp1 > & | pt_1,
|  | const cv::Point_< Tp2 > & | pt_2 )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取距离

模板参数

  Tp1 | 平面点 1 的数据类型
  Tp2 | 平面点 2 的数据类型

参数

  [in] | pt_1 | 起始点
  [in] | pt_2 | 终止点

返回
  平面欧式距离

## ◆ getDistance() [3/5]

template<typename Tp1, typename Tp2>

auto rm::getDistance | ( | const cv::Vec< Tp1, 2 > & | vec_1,
|  | const cv::Vec< Tp2, 2 > & | vec_2 )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取距离

模板参数

  Tp1 | 平面向量 1 的数据类型
  Tp2 | 平面向量 2 的数据类型

参数

  [in] | vec_1 | 起始向量
  [in] | vec_2 | 终止向量

返回
  平面欧式距离

## ◆ getDistance() [4/5]

template<typename Tp1, typename Tp2>

auto rm::getDistance | ( | const cv::Vec< Tp1, 3 > & | vec_1,
|  | const cv::Vec< Tp2, 3 > & | vec_2,
|  | CalPlane | calplane = CalPlane::xyz )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取距离

模板参数

  Tp1 | 空间向量 1 的数据类型
  Tp2 | 空间向量 2 的数据类型

参数

  [in] | vec_1 | 起始向量
  [in] | vec_2 | 终止向量
  [in] | calplane | 要计算的距离所在的平面

返回
  空间欧式距离

函数调用图:

## ◆ getDistance() [5/5]

template<typename Tp1, typename Tp2>

auto rm::getDistance | ( | const cv::Vec< Tp1, 4 > & | line,
|  | const cv::Point_< Tp2 > & | pt,
|  | bool | direc = true )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

点到直线距离，其中 \(P=(x_0,y_0)\) 到直线 \(l:Ax+By+C=0\) 距离公式为

\[D(P,l)=\frac{Ax_0+By_0+C}{\sqrt{A^2+B^2}}\]

模板参数

  Tp1 | 直线方程数据类型
  Tp2 | 平面点的数据类型

参数

  [in] | line | 用 cv::Vec4_ 表示的直线方程 \((v_x, v_y, x_0, y_0)\)
  [in] | pt | 平面点
  [in] | direc | 是否区分距离的方向

注解
  - 计算结果有正负，即区分点在直线分布的方向，通过修改传入参数 direc = false 来设置计算结果不区分正负（统一返回 \(|D(P,l)|\)）
  - line 需要传入元素为 \((v_x, v_y, x_0, y_0)\) 的用 cv::Vec4_ 表示的向量，指代下列直线方程（与 cv::fitLine 传入的 cv::Vec4_ 参数一致）

    \[l:y-y_0=\frac{v_y}{v_x}(x-x_0)\]

返回
  平面欧式距离

## ◆ getHAngle()

template<typename Tp1, typename Tp2>

auto rm::getHAngle | ( | const cv::Point_< Tp1 > & | start,
|  | const cv::Point_< Tp2 > & | end,
|  | AngleMode | mode = RAD )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取与水平方向的夹角，以平面直角坐标系 \(x\) 轴为分界线， 逆时针 为正方向，范围: \((-180°,180°]\) ，默认返回弧度制

注解
  与像素（图像）坐标系不同，像素（图像）坐标系中 \(y\) 轴向下为正方向，而此函数将 \(y\) 轴向上设置为正方向，因此才能将逆时针表示为旋转的正方向

模板参数

  Tp1 | 平面点 1 的数据类型
  Tp2 | 平面点 2 的数据类型

参数

  [in] | start | 像素坐标系下的起点
  [in] | end | 像素坐标系下的终点
  [in] | mode | 返回角度模式，默认弧度制

返回
  返回角度

函数调用图:

## ◆ getVAngle()

template<typename Tp1, typename Tp2>

auto rm::getVAngle | ( | const cv::Point_< Tp1 > & | start,
|  | const cv::Point_< Tp2 > & | end,
|  | AngleMode | mode = RAD )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

获取与垂直方向的夹角，以平面直角坐标系 \(y\) 轴为分界线， 顺时针 为正方向，范围: \((-180°,180°]\) ，默认返回弧度制

模板参数

  Tp1 | 平面点 1 的数据类型
  Tp2 | 平面点 2 的数据类型

参数

  [in] | start | 起点
  [in] | end | 终点
  [in] | mode | 返回角度模式，默认弧度制

返回
  返回角度

函数调用图:

## ◆ mean()

template<typename ForwardIterator>

std::iterator_traits< ForwardIterator >::value_type rm::mean | ( | ForwardIterator | first,
|  | ForwardIterator | last )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

计算均值

模板参数

  ForwardIterator | 前向迭代器

参数

  [in] | first | 起始迭代器
  [in] | last | 终止迭代器

返回
  均值

## ◆ operator""_PI() [1/2]

double rm::numeric_literals::operator""_PI | ( | long double | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator""_PI() [2/2]

double rm::numeric_literals::operator""_PI | ( | long long unsigned | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator""_to_deg() [1/2]

double rm::numeric_literals::operator""_to_deg | ( | long double | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator""_to_deg() [2/2]

double rm::numeric_literals::operator""_to_deg | ( | long long unsigned | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator""_to_rad() [1/2]

double rm::numeric_literals::operator""_to_rad | ( | long double | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator""_to_rad() [2/2]

double rm::numeric_literals::operator""_to_rad | ( | long long unsigned | num | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator+() [1/2]

template<typename Tp>

cv::Matx< Tp, 1, 1 > rm::operator+ | ( | const cv::Matx< Tp, 1, 1 > & | mat,
|  | Tp | val )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator+() [2/2]

template<typename Tp>

Tp rm::operator+ | ( | Tp | val,
|  | const cv::Matx< Tp, 1, 1 > & | mat )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator-() [1/2]

template<typename Tp>

cv::Matx< Tp, 1, 1 > rm::operator- | ( | const cv::Matx< Tp, 1, 1 > & | mat,
|  | Tp | val )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ operator-() [2/2]

template<typename Tp>

Tp rm::operator- | ( | Tp | val,
|  | const cv::Matx< Tp, 1, 1 > & | mat )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

## ◆ rad2deg()

template<typename Tp>

Tp rm::rad2deg | ( | Tp | rad | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

弧度转换为角度

模板参数

  Tp | 变量类型

参数

  [in] | rad | 弧度

返回
  角度

## ◆ sec()

template<typename Tp>

Tp rm::sec | ( | Tp | x | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

正割 \(\sec(x)\)

模板参数

  Tp | 变量类型

参数

  [in] | x | 自变量

返回
  sec(x)

## ◆ sgn()

template<typename Tp>

Tp rm::sgn | ( | Tp | x | ) |
| constexpr

`#include <rmvl/algorithm/math.hpp>`

符号函数

模板参数

  Tp | 变量类型

参数

  [in] | x | 自变量

返回

  \[\text{sgn}(x)=\left\{\begin{matrix} 1&&x>0\\0&&x=0\\-1&&x<0 \end{matrix}\right.\]

## ◆ sigmoid()

template<typename Tp>

Tp rm::sigmoid | ( | Tp | x,
|  | Tp | k = 1,
|  | Tp | Kp = 1,
|  | Tp | mu = 0 )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

计算 sigmoid(x) 在某一点的函数值

注解
  sigmoid 函数表达式为：

  \[y=f_{sig}(x)=\frac{K_p}{1+e^{-kx+\mu}}\]

模板参数

  Tp | 变量类型

参数

  [in] | x | 自变量 \(x\)
  [in] | k | 缩放系数 \(k\)
  [in] | Kp | 开环增益系数 \(K_p\)
  [in] | mu | 偏移系数 \(\mu\)

返回
  函数值 \(f_{sig}(x)\)

## ◆ variance()

template<typename ForwardIterator>

std::iterator_traits< ForwardIterator >::value_type rm::variance | ( | ForwardIterator | first,
|  | ForwardIterator | last )
| constexpr

`#include <rmvl/algorithm/math.hpp>`

计算方差

模板参数

  ForwardIterator | 前向迭代器

参数

  [in] | first | 起始迭代器
  [in] | last | 终止迭代器

返回
  方差

函数调用图:

## 变量说明

## ◆ e

double rm::e = 2.7182818459045
| constexpr

`#include <rmvl/algorithm/math.hpp>`

自然对数底数: \(e\)

## ◆ FLOAT_MAX

float rm::FLOAT_MAX = std::numeric_limits<float>::max()
| constexpr

`#include <rmvl/algorithm/math.hpp>`

float 最大值

## ◆ FLOAT_MIN

float rm::FLOAT_MIN = std::numeric_limits<float>::min()
| constexpr

`#include <rmvl/algorithm/math.hpp>`

float 最小值

## ◆ PI

double rm::PI = 3.14159265358979323
| constexpr

`#include <rmvl/algorithm/math.hpp>`

圆周率: \(\pi\)

## ◆ SQRT_2

double rm::SQRT_2 = 1.4142135623731
| constexpr

`#include <rmvl/algorithm/math.hpp>`

根号 2: \(\sqrt2\)