|
Console Library 8.0.0
A header-only library that makes C++ simple
|
MultiArray 的数学运算函数集合。 More...
Macros | |
| #define | CONSOLE_MATMUL_BLOCK_SIZE 128 |
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> | |
| T | 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_blocked (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| 矩阵乘法(二维),使用分块算法。 | |
| template<class T, size_t M, size_t N, size_t K> | |
| MultiArray< T, M, K > | console::matmul_simple (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| 矩阵乘法(二维),使用简单算法。 | |
| template<class T, size_t M, size_t N, size_t K> | |
| MultiArray< T, M, K > | console::matmul_impl (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B, std::true_type) |
| 矩阵乘法(二维) std::true_type 特化,使用分块算法。 | |
| template<class T, size_t M, size_t N, size_t K> | |
| MultiArray< T, M, K > | console::matmul_impl (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B, std::false_type) |
| 矩阵乘法(二维) std::false_type 特化,使用简单算法。 | |
| 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) |
| 矩阵乘法(二维),根据 BLOCK 大小选择简单算法或分块算法。 | |
| template<class T, size_t M, size_t N, size_t K> | |
| MultiArray< T, M, K > | console::matmul_parallel (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> | |
| T | 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> | |
| T | console::product (const MultiArray< T, Dims... > &arr) |
| 计算所有元素的乘积。 | |
| template<class T, size_t... Dims> | |
| T | 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, class CharT, class Traits = std::char_traits<CharT>> | |
| void | console::print_stats (std::basic_ostream< CharT, Traits > &os, const MultiArray< T, Dims... > &arr, const std::string &name="") |
| 打印数组的基本统计信息(和、均值、最小值、最大值、标准差)。 | |
| template<class T, size_t... Dims> | |
| double | console::covariance (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 计算两个数组的协方差。 | |
| template<class T, size_t... Dims> | |
| double | console::correlation (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 计算两个数组的相关系数。 | |
| template<class T, size_t... Dims> | |
| double | console::median (MultiArray< T, Dims... > arr) |
| 计算数组的中位数。 | |
| template<class T, size_t... Dims> | |
| double | console::quantile (MultiArray< T, Dims... > arr, double q, QuantileMethod method=QuantileMethod::Nearest) |
| 计算数组的分位数。 | |
| template<class T> | |
| T | console::det2x2 (const MultiArray< T, 2, 2 > &A) |
| 计算 2x2 矩阵的行列式。 | |
| template<class T> | |
| T | console::det3x3 (const MultiArray< T, 3, 3 > &A) |
| 计算 3x3 矩阵的行列式。 | |
| template<class T> | |
| MultiArray< T, 2, 2 > | console::inv2x2 (const MultiArray< T, 2, 2 > &A) |
| 计算 2x2 矩阵的逆矩阵。 | |
| template<class T> | |
| MultiArray< T, 3, 3 > | console::inv3x3 (const MultiArray< T, 3, 3 > &A) |
| 计算 3x3 矩阵的逆矩阵。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::sigmoid (const MultiArray< T, Dims... > &arr) |
| 计算 Sigmoid 激活函数。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::relu (const MultiArray< T, Dims... > &arr) |
| 计算 ReLU 激活函数。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::softmax (const MultiArray< T, Dims... > &arr) |
| 计算 Softmax 激活函数。 | |
| template<class T, size_t H, size_t W, size_t KH, size_t KW> | |
| MultiArray< T, H - KH+1, W - KW+1 > | console::convolve2d (const MultiArray< T, H, W > &image, const MultiArray< T, KH, KW > &kernel) |
| 执行二维卷积操作。 | |
| template<class T, size_t M, size_t N> | |
| void | console::print_matrix (std::ostream &os, const MultiArray< T, M, N > &A, const char *name=nullptr) |
| 打印矩阵。 | |
| template<class T, size_t N> | |
| MultiArray< std::complex< T >, N > | console::fft (const MultiArray< std::complex< T >, N > &x) |
| 一维 FFT(Cooley-Tukey 算法)。 | |
| template<class T, size_t N> | |
| MultiArray< std::complex< T >, N > | console::ifft (const MultiArray< std::complex< T >, N > &X) |
| 一维 IFFT(逆快速傅里叶变换)。 | |
| template<class T, size_t N> | |
| MultiArray< std::complex< T >, N > | console::rfft (const MultiArray< T, N > &x) |
| 实数 FFT(输入为实数,输出为复数频域)。 | |
| template<class T, size_t N> | |
| MultiArray< T, N > | console::irfft (const MultiArray< std::complex< T >, N > &X) |
| 实数 IFFT(输入为复数频域,输出为实数时域)。 | |
| template<class T, size_t N> | |
| MultiArray< T, N/2+1 > | console::spectrum (const MultiArray< T, N > &x) |
| 频谱(幅值谱),归一化到真实幅度。 | |
| template<class T, size_t N> | |
| MultiArray< T, N/2+1 > | console::power_spectrum (const MultiArray< T, N > &x) |
| 功率谱(幅值平方)。 | |
| template<class T, size_t N> | |
| MultiArray< T, N/2+1 > | console::phase_spectrum (const MultiArray< T, N > &x) |
| 相位谱(弧度)。 | |
| template<class T, size_t N> | |
| MultiArray< T, N/2+1 > | console::log_spectrum (const MultiArray< T, N > &x) |
| 对数频谱(分贝)。 | |
| template<class T, size_t M, size_t N> | |
| MultiArray< T, M > | console::matvec (const MultiArray< T, M, N > &A, const MultiArray< T, N > &x) |
| 矩阵-向量乘法。 | |
| template<class T, size_t M, size_t N> | |
| MultiArray< T, M, N > | console::outer (const MultiArray< T, M > &a, const MultiArray< T, N > &b) |
| 外积。 | |
| template<class T, size_t M, size_t N> | |
| double | console::frobenius_norm (const MultiArray< T, M, N > &A) |
| 矩阵范数(弗罗贝尼乌斯范数)。 | |
| template<class T, size_t M, size_t N> | |
| T | console::column_norm (const MultiArray< T, M, N > &A) |
| 列范数(最大列和范数)。 | |
| template<class T, size_t M, size_t N> | |
| T | console::row_norm (const MultiArray< T, M, N > &A) |
| 行范数(最大行和范数)。 | |
| template<class T, size_t N> | |
| MultiArray< T, N > | console::hann_window () |
| 窗函数。 | |
| template<class T, size_t N> | |
| MultiArray< T, N > | console::hamming_window () |
| 汉明窗。 | |
| template<class T, size_t N> | |
| MultiArray< T, N > | console::blackman_window () |
| 布莱克曼窗。 | |
| template<class T, size_t N> | |
| MultiArray< T, N > | console::fftshift (const MultiArray< T, N > &x) |
| FFT 移位。 | |
| template<class T, size_t N, size_t M> | |
| MultiArray< T, N+M - 1 > | console::cross_correlation (const MultiArray< T, N > &a, const MultiArray< T, M > &b) |
| 互相关。 | |
MultiArray 的数学运算函数集合。
| #define CONSOLE_MATMUL_BLOCK_SIZE 128 |
|
strong |
| MultiArray< T, Dims... > console::abs | ( | const MultiArray< T, Dims... > & | arr | ) |
计算数组中每个元素的绝对值。
| T | 元素类型(应为有符号数值类型)。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::acos | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::acos。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::asin | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::asin。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::atan | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::atan。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, N > console::blackman_window | ( | ) |
布莱克曼窗。
| T | 浮点类型。 |
| N | 窗函数长度。 |
| MultiArray< T, Dims... > console::ceil | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素向上取整。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::clamp | ( | const MultiArray< T, Dims... > & | arr, |
| T | low, | ||
| T | high ) |
将数组每个元素限制在 [low, high] 范围内。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| low | 下限。 |
| high | 上限。 |
| T console::column_norm | ( | const MultiArray< T, M, N > & | A | ) |
列范数(最大列和范数)。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| A | 矩阵。 |
| MultiArray< T, N+K - 1 > console::convolve1d | ( | const MultiArray< T, N > & | signal, |
| const MultiArray< T, K > & | kernel ) |
一维卷积。
| T | 元素类型。 |
| N | 信号长度。 |
| K | 卷积核长度。 |
| signal | 信号数组。 |
| kernel | 卷积核数组。 |
| MultiArray< T, H - KH+1, W - KW+1 > console::convolve2d | ( | const MultiArray< T, H, W > & | image, |
| const MultiArray< T, KH, KW > & | kernel ) |
执行二维卷积操作。
| T | 浮点类型。 |
| H | 输入图像高度。 |
| W | 输入图像宽度。 |
| KH | 卷积核高度。 |
| KW | 卷积核宽度。 |
| image | 输入图像。 |
| kernel | 卷积核。 |
| double console::correlation | ( | const MultiArray< T, Dims... > & | a, |
| const MultiArray< T, Dims... > & | b ) |
计算两个数组的相关系数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| a | 第一个数组。 |
| b | 第二个数组。 |
| MultiArray< T, Dims... > console::cos | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::cos。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::cosh | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::cosh。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| double console::cosine | ( | const MultiArray< T, N > & | a, |
| const MultiArray< T, N > & | b ) |
计算两个向量的余弦相似度。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 向量 a。 |
| b | 向量 b。 |
| double console::covariance | ( | const MultiArray< T, Dims... > & | a, |
| const MultiArray< T, Dims... > & | b ) |
计算两个数组的协方差。
| T | 浮点类型。 |
| Dims | 维度包。 |
| a | 第一个数组。 |
| b | 第二个数组。 |
| MultiArray< T, 3 > console::cross | ( | const MultiArray< T, 3 > & | a, |
| const MultiArray< T, 3 > & | b ) |
三维向量的叉积。
| T | 元素类型。 |
| a | 向量 a(长度为 3)。 |
| b | 向量 b(长度为 3)。 |
| MultiArray< T, N+M - 1 > console::cross_correlation | ( | const MultiArray< T, N > & | a, |
| const MultiArray< T, M > & | b ) |
互相关。
| T | 浮点类型。 |
| N | 数组长度。 |
| M | 数组长度。 |
| a | 数组。 |
| b | 数组。 |
| T console::det2x2 | ( | const MultiArray< T, 2, 2 > & | A | ) |
计算 2x2 矩阵的行列式。
| T | 浮点类型。 |
| A | 输入矩阵。 |
| T console::det3x3 | ( | const MultiArray< T, 3, 3 > & | A | ) |
计算 3x3 矩阵的行列式。
| T | 浮点类型。 |
| A | 输入矩阵。 |
| T console::dot | ( | const MultiArray< T, N > & | a, |
| const MultiArray< T, N > & | b ) |
计算两个一维向量的点积。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 向量 a。 |
| b | 向量 b。 |
| double console::euclidean | ( | const MultiArray< T, N > & | a, |
| const MultiArray< T, N > & | b ) |
计算两个向量的欧几里得距离。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 向量 a。 |
| b | 向量 b。 |
| MultiArray< T, Dims... > console::exp | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::exp。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< std::complex< T >, N > console::fft | ( | const MultiArray< std::complex< T >, N > & | x | ) |
一维 FFT(Cooley-Tukey 算法)。
| T | 浮点类型(float/double)。 |
| x | 输入信号(时域),长度必须是 2 的幂。 |
| MultiArray< T, N > console::fftshift | ( | const MultiArray< T, N > & | x | ) |
FFT 移位。
| T | 浮点类型。 |
| N | 数组长度。 |
| x | 数组。 |
| MultiArray< T, Dims... > console::floor | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素向下取整。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| double console::frobenius_norm | ( | const MultiArray< T, M, N > & | A | ) |
矩阵范数(弗罗贝尼乌斯范数)。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| A | 矩阵。 |
| MultiArray< T, N > console::hamming_window | ( | ) |
汉明窗。
| T | 浮点类型。 |
| N | 窗函数长度。 |
| MultiArray< T, N > console::hann_window | ( | ) |
窗函数。
| T | 浮点类型。 |
| N | 窗函数长度。 |
| MultiArray< T, N, N > console::identity | ( | ) |
| MultiArray< std::complex< T >, N > console::ifft | ( | const MultiArray< std::complex< T >, N > & | X | ) |
一维 IFFT(逆快速傅里叶变换)。
| T | 浮点类型(float/double)。 |
| X | 输入信号(频域)。 |
| MultiArray< T, 2, 2 > console::inv2x2 | ( | const MultiArray< T, 2, 2 > & | A | ) |
计算 2x2 矩阵的逆矩阵。
| T | 浮点类型。 |
| A | 输入矩阵。 |
| MultiArray< T, 3, 3 > console::inv3x3 | ( | const MultiArray< T, 3, 3 > & | A | ) |
计算 3x3 矩阵的逆矩阵。
| T | 浮点类型。 |
| A | 输入矩阵。 |
| MultiArray< T, N > console::irfft | ( | const MultiArray< std::complex< T >, N > & | X | ) |
实数 IFFT(输入为复数频域,输出为实数时域)。
| T | 浮点类型(float/double)。 |
| X | 输入频域信号。 |
| T console::kth_smallest | ( | MultiArray< T, Dims... > | arr, |
| size_t | k ) |
查找第 k 小的元素(会修改数组顺序)。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组(将部分排序,顺序改变)。 |
| k | 索引(0-based),若超出范围则取最大索引。 |
| void console::linspace | ( | MultiArray< T, Dims... > & | arr, |
| T | start, | ||
| T | end ) |
用线性等间距值填充数组。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 目标数组(其 fsize() 决定点数)。 |
| start | 起始值。 |
| end | 结束值(包含)。 |
| MultiArray< T, Dims... > console::log | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::log(自然对数)。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::log10 | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::log10(常用对数)。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, N/2+1 > console::log_spectrum | ( | const MultiArray< T, N > & | x | ) |
对数频谱(分贝)。
| T | 浮点类型。 |
| N | 长度。 |
| x | 输入信号。 |
| double console::manhattan | ( | const MultiArray< T, N > & | a, |
| const MultiArray< T, N > & | b ) |
计算两个向量的曼哈顿距离(L1 距离)。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 向量 a。 |
| b | 向量 b。 |
|
inline |
矩阵乘法(二维),根据 BLOCK 大小选择简单算法或分块算法。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
| MultiArray< T, M, K > console::matmul_blocked | ( | const MultiArray< T, M, N > & | A, |
| const MultiArray< T, N, K > & | B ) |
矩阵乘法(二维),使用分块算法。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
|
inline |
矩阵乘法(二维) std::false_type 特化,使用简单算法。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
|
inline |
矩阵乘法(二维) std::true_type 特化,使用分块算法。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
| MultiArray< T, M, K > console::matmul_parallel | ( | const MultiArray< T, M, N > & | A, |
| const MultiArray< T, N, K > & | B ) |
并行矩阵乘法(二维),使用分块算法并行计算。
将输出矩阵 C 按块划分,每个块提交到线程池并行计算。 每个块内部使用分块算法优化缓存利用率。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
| MultiArray< T, M, K > console::matmul_simple | ( | const MultiArray< T, M, N > & | A, |
| const MultiArray< T, N, K > & | B ) |
矩阵乘法(二维),使用简单算法。
| T | 元素类型。 |
| M | 矩阵 A 的行数。 |
| N | A 的列数(同时也是 B 的行数)。 |
| K | B 的列数。 |
| A | 左矩阵,尺寸 M×N。 |
| B | 右矩阵,尺寸 N×K。 |
| MultiArray< T, M > console::matvec | ( | const MultiArray< T, M, N > & | A, |
| const MultiArray< T, N > & | x ) |
矩阵-向量乘法。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| A | 矩阵。 |
| x | 向量。 |
| double console::mean | ( | const MultiArray< T, Dims... > & | arr | ) |
计算 MultiArray 中所有元素的算术平均值。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| double console::median | ( | MultiArray< T, Dims... > | arr | ) |
计算数组的中位数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| double console::norm | ( | const MultiArray< T, N > & | a | ) |
计算向量的欧几里得范数(L2 范数)。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 输入向量。 |
| MultiArray< T, N > console::normalize | ( | const MultiArray< T, N > & | a | ) |
将向量归一化为单位向量。
| T | 元素类型。 |
| N | 向量长度。 |
| a | 输入向量。 |
| MultiArray< T, M, N > console::outer | ( | const MultiArray< T, M > & | a, |
| const MultiArray< T, N > & | b ) |
外积。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| a | 向量。 |
| b | 向量。 |
| MultiArray< T, N/2+1 > console::phase_spectrum | ( | const MultiArray< T, N > & | x | ) |
| MultiArray< T, Dims... > console::pow | ( | const MultiArray< T, Dims... > & | arr, |
| T | exponent ) |
对数组每个元素取幂(常数指数)。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| exponent | 指数(常数)。 |
| MultiArray< T, Dims... > console::pow | ( | const MultiArray< T, Dims... > & | base, |
| const MultiArray< T, Dims... > & | exp ) |
对数组每个元素取幂(指数也是数组,逐元素计算)。
| T | 元素类型。 |
| Dims | 维度包。 |
| base | 底数数组。 |
| exp | 指数数组(必须与 base 形状相同)。 |
| MultiArray< T, N/2+1 > console::power_spectrum | ( | const MultiArray< T, N > & | x | ) |
| void console::print_matrix | ( | std::ostream & | os, |
| const MultiArray< T, M, N > & | A, | ||
| const char * | name = nullptr ) |
打印矩阵。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| os | 输出流。 |
| A | 矩阵。 |
| name | 矩阵名称(可选)。 |
| void console::print_stats | ( | std::basic_ostream< CharT, Traits > & | os, |
| const MultiArray< T, Dims... > & | arr, | ||
| const std::string & | name = "" ) |
打印数组的基本统计信息(和、均值、最小值、最大值、标准差)。
| T | 元素类型。 |
| Dims | 维度包。 |
| os | 发送到的输出流。 |
| arr | 输入数组。 |
| name | 数组名称(可选),若提供则打印标题。 |
| T console::product | ( | const MultiArray< T, Dims... > & | arr | ) |
计算所有元素的乘积。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| double console::quantile | ( | MultiArray< T, Dims... > | arr, |
| double | q, | ||
| QuantileMethod | method = QuantileMethod::Nearest ) |
计算数组的分位数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| q | 分位数位置(0 到 1 之间)。 |
| method | 分位数计算方法(默认为 Nearest)。 |
| void console::randomize | ( | MultiArray< T, Dims... > & | arr, |
| T | min = 0, | ||
| T | max = 100 ) |
用均匀分布随机数填充数组。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 目标数组。 |
| min | 最小值(包含)。 |
| max | 最大值(包含)。 |
| void console::randomize_normal | ( | MultiArray< T, Dims... > & | arr, |
| T | mean = 0, | ||
| T | stddev = 1 ) |
用正态分布随机数填充数组。
| T | 元素类型(通常为浮点数)。 |
| Dims | 维度包。 |
| arr | 目标数组。 |
| mean | 均值。 |
| stddev | 标准差。 |
| MultiArray< T, Dims... > console::relu | ( | const MultiArray< T, Dims... > & | arr | ) |
计算 ReLU 激活函数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< std::complex< T >, N > console::rfft | ( | const MultiArray< T, N > & | x | ) |
实数 FFT(输入为实数,输出为复数频域)。
| T | 浮点类型(float/double)。 |
| x | 输入实数信号。 |
| MultiArray< T, Dims... > console::round | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素四舍五入。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| T console::row_norm | ( | const MultiArray< T, M, N > & | A | ) |
行范数(最大行和范数)。
| T | 浮点类型。 |
| M | 矩阵行数。 |
| N | 矩阵列数。 |
| A | 矩阵。 |
| MultiArray< T, Dims... > console::sigmoid | ( | const MultiArray< T, Dims... > & | arr | ) |
计算 Sigmoid 激活函数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::sin | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::sin。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::sinh | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::sinh。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::softmax | ( | const MultiArray< T, Dims... > & | arr | ) |
计算 Softmax 激活函数。
| T | 浮点类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, N/2+1 > console::spectrum | ( | const MultiArray< T, N > & | x | ) |
频谱(幅值谱),归一化到真实幅度。
| T | 浮点类型。 |
| N | 长度。 |
| x | 输入信号。 |
| double console::stddev | ( | const MultiArray< T, Dims... > & | arr, |
| bool | sample = true ) |
计算标准差。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| sample | 若为 true,计算样本标准差(除以 n-1 的方差开根);否则总体标准差。 |
| MultiArray< T, Dims... > console::tan | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::tan。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| MultiArray< T, Dims... > console::tanh | ( | const MultiArray< T, Dims... > & | arr | ) |
对数组每个元素应用 std::tanh。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| T console::trace | ( | const MultiArray< T, N, N > & | A | ) |
计算方阵的迹(对角线元素之和)。
| T | 元素类型。 |
| N | 矩阵阶数。 |
| A | 方阵。 |
| MultiArray< T, N, M > console::transpose | ( | const MultiArray< T, M, N > & | A | ) |
矩阵转置。
| T | 元素类型。 |
| M | 原矩阵行数。 |
| N | 原矩阵列数。 |
| A | 输入矩阵,尺寸 M×N。 |
| double console::variance | ( | const MultiArray< T, Dims... > & | arr, |
| bool | sample = true ) |
计算方差。
| T | 元素类型。 |
| Dims | 维度包。 |
| arr | 输入数组。 |
| sample | 若为 true(默认),计算样本方差(除以 n-1);若为 false,计算总体方差(除以 n)。 |