Console Library 4.7.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
matools.h File Reference

提供 MultiArray 多维数组的数学工具函数。 More...

#include <iostream>
#include <numeric>
#include <cmath>
#include "multiarray.h"
#include "random.h"

Go to the source code of this file.

Namespaces

namespace  console
 本库所有组件所在的顶层命名空间。

Macros

#define _USE_MATH_DEFINES
#define M_PI   3.14159265358979323846

Functions

template<class T, size_t... Dims>
double console::mean (const MultiArray< T, Dims... > &arr)
 计算 MultiArray 中所有元素的算术平均值。
template<class T, size_t... Dims>
double console::variance (const MultiArray< T, Dims... > &arr, bool sample=true)
 计算方差。
template<class T, size_t... Dims>
double console::stddev (const MultiArray< T, Dims... > &arr, bool sample=true)
 计算标准差。
template<class T, size_t N>
console::dot (const MultiArray< T, N > &a, const MultiArray< T, N > &b)
 计算两个一维向量的点积。
template<class T, size_t N>
double console::norm (const MultiArray< T, N > &a)
 计算向量的欧几里得范数(L2 范数)。
template<class T, size_t N>
double console::cosine (const MultiArray< T, N > &a, const MultiArray< T, N > &b)
 计算两个向量的余弦相似度。
template<class T, size_t N>
MultiArray< T, N > console::normalize (const MultiArray< T, N > &a)
 将向量归一化为单位向量。
template<class T, size_t N>
double console::euclidean (const MultiArray< T, N > &a, const MultiArray< T, N > &b)
 计算两个向量的欧几里得距离。
template<class T, size_t N>
double console::manhattan (const MultiArray< T, N > &a, const MultiArray< T, N > &b)
 计算两个向量的曼哈顿距离(L1 距离)。
template<class T, size_t M, size_t N, size_t K>
MultiArray< T, M, K > console::matmul (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B)
 矩阵乘法(二维)。
template<class T, size_t M, size_t N>
MultiArray< T, N, M > console::transpose (const MultiArray< T, M, N > &A)
 矩阵转置。
template<class T, size_t N>
MultiArray< T, N, N > console::identity ()
 生成 N×N 的单位矩阵。
template<class T, size_t N>
console::trace (const MultiArray< T, N, N > &A)
 计算方阵的迹(对角线元素之和)。
template<class T>
MultiArray< T, 3 > console::cross (const MultiArray< T, 3 > &a, const MultiArray< T, 3 > &b)
 三维向量的叉积。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::clamp (const MultiArray< T, Dims... > &arr, T low, T high)
 将数组每个元素限制在 [low, high] 范围内。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::abs (const MultiArray< T, Dims... > &arr)
 计算数组中每个元素的绝对值。
template<class T, size_t... Dims>
void console::randomize (MultiArray< T, Dims... > &arr, T min=0, T max=100)
 用均匀分布随机数填充数组。
template<class T, size_t... Dims>
void console::randomize_normal (MultiArray< T, Dims... > &arr, T mean=0, T stddev=1)
 用正态分布随机数填充数组。
template<class T, size_t... Dims>
void console::linspace (MultiArray< T, Dims... > &arr, T start, T end)
 用线性等间距值填充数组。
template<class T, size_t... Dims>
console::product (const MultiArray< T, Dims... > &arr)
 计算所有元素的乘积。
template<class T, size_t... Dims>
console::kth_smallest (MultiArray< T, Dims... > arr, size_t k)
 查找第 k 小的元素(会修改数组顺序)。
template<class T, size_t N, size_t K>
MultiArray< T, N+K - 1 > console::convolve1d (const MultiArray< T, N > &signal, const MultiArray< T, K > &kernel)
 一维卷积。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::sin (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::sin。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::cos (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::cos。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::tan (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::tan。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::asin (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::asin。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::acos (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::acos。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::atan (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::atan。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::sinh (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::sinh。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::cosh (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::cosh。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::tanh (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::tanh。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::exp (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::exp。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::log (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::log(自然对数)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::log10 (const MultiArray< T, Dims... > &arr)
 对数组每个元素应用 std::log10(常用对数)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::pow (const MultiArray< T, Dims... > &arr, T exponent)
 对数组每个元素取幂(常数指数)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::pow (const MultiArray< T, Dims... > &base, const MultiArray< T, Dims... > &exp)
 对数组每个元素取幂(指数也是数组,逐元素计算)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::floor (const MultiArray< T, Dims... > &arr)
 对数组每个元素向下取整。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::ceil (const MultiArray< T, Dims... > &arr)
 对数组每个元素向上取整。
template<class T, size_t... Dims>
MultiArray< T, Dims... > console::round (const MultiArray< T, Dims... > &arr)
 对数组每个元素四舍五入。
template<class T, size_t... Dims>
void console::print_stats (std::ostream &os, const MultiArray< T, Dims... > &arr, const char *name="")
 打印数组的基本统计信息(和、均值、最小值、最大值、标准差)。

Detailed Description

提供 MultiArray 多维数组的数学工具函数。

包含统计(均值、方差、标准差)、线性代数(点积、范数、余弦、矩阵乘法、转置、迹、叉积)、 元素级运算(clamp、abs、三角函数、指数对数、幂、取整)、随机初始化、卷积等。

Author
MrXie1109
Date
2026

Macro Definition Documentation

◆ _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

◆ M_PI

#define M_PI   3.14159265358979323846