LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
statistics_selection.c 文件参考
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include "memory_bridge.h"
#include "lmmc/config.h"
#include "lmmc/numeric.h"
#include "lmmc/stats.h"
#include "statistics_internal.h"
statistics_selection.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_vec_median (const lmmc_vec_t *x, lmmc_real_t *out)
 计算向量中位数。
lmmc_status_t lmmc_vec_quantile (const lmmc_vec_t *x, lmmc_real_t p, lmmc_real_t *out)
 计算向量的 p 分位数(线性插值法)。
lmmc_status_t lmmc_vec_histogram (const lmmc_vec_t *x, size_t nbins, lmmc_real_t *edges, size_t *counts)
 计算向量的等宽直方图。

函数说明

◆ lmmc_vec_median()

lmmc_status_t lmmc_vec_median ( const lmmc_vec_t * x,
lmmc_real_t * out )

计算向量中位数。

内部会复制并排序数据。对偶数长度使用无溢出的浮点中点计算。 所有观测值必须有限;非有限观测不会进入排序比较器。

参数
[in]x输入有限向量,size >= 1。
[out]out输出中位数。
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 x->size == 0 或指针为 NULL; LMMC_STATUS_NUMERICAL_FAILURE 若任一观测值非有限; LMMC_STATUS_ALLOCATION_FAILED 若临时数组分配失败。
副作用
  • 内部分配长度为 x->size 的临时数组用于排序,函数返回前释放。
  • 不修改输入向量 x 。

在文件 statistics_selection.c 第 26 行定义.

引用了 lmmc_vec_t::data, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_median() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_stats_median() , 以及 lmmc_vec_median().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_quantile()

lmmc_status_t lmmc_vec_quantile ( const lmmc_vec_t * x,
lmmc_real_t p,
lmmc_real_t * out )

计算向量的 p 分位数(线性插值法)。

非有限概率会在转换为数组索引前拒绝;所有观测值必须有限。

参数
[in]x输入有限向量,size >= 1。
[in]p有限分位数,范围 [0, 1]。
[out]out输出分位数值。
返回
LMMC_STATUS_OK 成功;LMMC_STATUS_INVALID_ARGUMENT 若 p 非有限 或不在 [0,1];LMMC_STATUS_NUMERICAL_FAILURE 若观测值非有限。

使用与 NumPy 默认方式相同的线性插值。

在文件 statistics_selection.c 第 56 行定义.

引用了 lmmc_vec_t::data, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_quantile() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_stats_quantile() , 以及 lmmc_vec_quantile().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_histogram()

lmmc_status_t lmmc_vec_histogram ( const lmmc_vec_t * x,
size_t nbins,
lmmc_real_t * edges,
size_t * counts )

计算向量的等宽直方图。

将有限数据范围 [min, max] 等分为 nbins 个区间。跨零范围采用 凸组合构造边界,避免 max-min 的中间溢出;分箱使用缩放后的归一化 坐标,保持线性时间复杂度。最后一个区间包含右端点。

参数
[in]x输入有限向量,size >= 1。
[in]nbins区间数,必须 >= 1。
[out]edges输出区间边界数组,长度 nbins+1,调用方预分配。
[out]counts输出每个区间的计数,长度 nbins,调用方预分配。
返回
LMMC_STATUS_OK 成功;LMMC_STATUS_NUMERICAL_FAILURE 若任一 观测值非有限,此时输出数组保持不变。

在文件 statistics_selection.c 第 182 行定义.

引用了 lmmc_vec_t::data, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_histogram() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_vec_histogram().

函数调用图:
这是这个函数的调用关系图: