Indicator Function | 指示函数 / 示性函数 vs. 特征函数

注:本文为 “Indicator Function” 相关合辑。

略作重排,未全校去重。
如有内容异常,请看原文。


示性函数(Indicator Function)

第六五签 于 2024 - 03 - 23 19:58:40 发布

示性函数(Indicator Function),也称为指示函数或特征函数,是数学中一个简单而强大的概念,用于表示某个集合中元素的存在性。给定一个集合 A A A,示性函数定义为一个函数 I A ( x ) I_A(x) IA(x),对于所有的输入 x x x,当 x ∈ A x \in A xA 时, I A ( x ) = 1 I_A(x) = 1 IA(x)=1;若 x ∉ A x \notin A x/A 时, I A ( x ) = 0 I_A(x) = 0 IA(x)=0。简而言之,示性函数用于指示一个元素是否属于某个特定集合。

数学定义

对于任意集合 A A A 和全集 X X X 的元素 x x x,示性函数 I A : X → { 0 , 1 } I_A : X \to \{0, 1\} IA:X{0,1} 定义如下:

I A ( x ) = { 1 if  x ∈ A 0 otherwise I_A(x)=\begin{cases} 1 & \text{if } x \in A \\ 0 & \text{otherwise} \end{cases} IA(x)={10if xAotherwise

用途

示性函数在数学、统计学、计算机科学等多个领域都有广泛的应用。它们可以用于:

  • 集合运算:通过示性函数的代数运算,可以方便地表示集合的并、交、差等运算。
  • 概率论:在概率论中,示性函数可以用来描述随机事件的发生情况,进而用于计算事件的概率等。
  • 测度论:示性函数在测度论中用于构建简单函数,是测度论与积分理论的基础工具之一。
  • 函数逼近:在数值方法和信号处理中,示性函数可以用来构造复杂函数的简单逼近。

示例

假设有一个集合 A = { 2 , 4 , 6 } A = \{2, 4, 6\} A={2,4,6},那么示性函数 I A ( x ) I_A(x) IA(x) 就可以表示为:

I A ( x ) = { 1 if  x = 2 , 4 , 6 0 otherwise I_A(x)=\begin{cases} 1 & \text{if } x = 2, 4, 6 \\ 0 & \text{otherwise} \end{cases} IA(x)={10if x=2,4,6otherwise

这意味着,如果我们输入 x = 2 x = 2 x=2,那么 I A ( 2 ) = 1 I_A(2) = 1 IA(2)=1,表示 2 属于集合 A A A;而如果我们输入 x = 3 x = 3 x=3,那么 I A ( 3 ) = 0 I_A(3) = 0 IA(3)=0,表示 3 不属于集合 A A A

示性函数因其简单和普遍适用性,在数学分析、统计学和应用数学领域中扮演着重要角色。


LaTeX indicator function(指示函数)(\mathbb {1} 不起作用)

五道口纳什 于 2017-05-02 22:17:39 发布

问题

在 LaTeX 中,\mathbb 命令用于生成空心字符,但该命令仅对字符有效,对数字无效。

解决方法

1、使用 bbm

若要使用 bbm 包来表示指示函数(空心的“1”),可参考以下代码:

\documentclass{article}
\usepackage{bbm}
\begin{document}
$$ \mathbbm{1} $$
\end{document}

2、使用 dsfont(double stroke)包

通过加载 dsfont 包,也可以实现类似的效果,示例代码如下:

\documentclass{article}
\usepackage{dsfont}
\begin{document}
$$ \mathds{1} $$
\end{document}

3、对大写字母 I 进行空心化

另外,一种较为简单的方式是对大写字母 I 进行空心化处理,使用 I \mathbb I I$\mathbb I$) 来表示。


机器学习公式推导中, I ( ) I() I(), E ( ) E() E(), 这两个符号代表什么意思?

比如: I ( h ( x , z ) = y ) I(h(x,z)=y) I(h(x,z)=y) 是计数吗?那 E ( I ( h ( x , z ) = y ) ) E(I(h(x,z)=y)) E(I(h(x,z)=y)) 代表什么?

小狼

不知道你指的是不是 E [ I ( h ( x , z ) = y ) ] \mathbb{E}[I(h(x,z) = y)] E[I(h(x,z)=y)]. 如果是,机器学习中 I ( ) I() I() 应该指的是 Indicator Function (指示函数), E [ ] \mathbb{E}[] E[] 应该指的是 Expected Value (期望值)。

指示函数 Indicator Function

指示函数是定义在集合 X X X 上的函数,用来表示其中有哪些元素属于它的子集 A A A
集合 X X X 的子集 A A A 的指示函数是函数 I A : X → { 0 , 1 } {\mathbb I}_A : X \to \{0, 1\} IA:X{0,1},定义为:

I A ( x ) : = { 1 if  x ∈ A 0 if  x ∉ A {\mathbb I}_A(x) := \begin{cases} 1 & \text{if } x \in A \\ 0 & \text{if } x \notin A \end{cases} IA(x):={10if xAif x/A

I ( h ( x , z ) = y ) {\mathbb I}(h(x,z) = y) I(h(x,z)=y) 用来判断 h ( x , z ) = y h(x,z) = y h(x,z)=y,成立时 I ( h ( x , z ) = y ) {\mathbb I}(h(x,z) = y) I(h(x,z)=y) 为 1,不成立时为 0,即:

I ( h ( x , z ) = y ) = { 1 h ( x , z ) = y 0 h ( x , z ) ≠ y {\mathbb I}(h(x,z) = y)= \begin{cases} 1 & h(x,z) = y \\ 0 & h(x,z) \neq y \end{cases} I(h(x,z)=y)={10h(x,z)=yh(x,z)=y

期望值 Expected Value

X X X 是一个随机变量,具有分别以概率 p 1 , p 2 , ⋯   , p k p_1, p_2, \cdots , p_k p1,p2,,pk 出现的有限数量的有限结果 x 1 , x 2 , ⋯   , x k x_1, x_2, \cdots , x_k x1,x2,,xk
X X X 的期望值 E [ X ] \mathbb{E}[X] E[X] 定义为:

E [ X ] = ∑ i = 1 k x i p i = x 1 p 1 + x 2 p 2 + ⋯ + x k p k \mathbb{E}[X] = \sum_{i = 1}^{k} x_i p_i = x_1 p_1 + x_2 p_2 + \cdots + x_k p_k E[X]=i=1kxipi=x1p1+x2p2++xkpk

一般都会有下标然后求和求积分什么的,但是题主这里没有,那么 E [ I ( h ( x , z ) = y ) ] \mathbb{E}[{\mathbb I}(h(x,z) = y)] E[I(h(x,z)=y)] 就表示的是 h ( x , z ) = y h(x,z) = y h(x,z)=y 的指示函数的期望值 ~

参考

  1. 指示函数定义:Wikipedia, https://en.wikipedia.org/wiki/Indicator_function#Definition
  2. 期望值定义:Wikipedia, https://en.wikipedia.org/wiki/Expected_value#Finite_case

编辑于 2020 - 07 - 09 16:35

爱做梦的猪

I ( x ) {\mathbb I}(x) I(x) 代表指示函数,数学中,指示函数是定义在某集合 X 上的函数,表示其中有哪些元素属于某一子集 A。概率论有另一意思迥异的特征函数。可以说为真输出 1,为假输出 0。 I ( h ( x , z ) = y ) {\mathbb I}(h(x,z)=y) I(h(x,z)=y) 表示如果 h ( x , z ) = y h(x,z)=y h(x,z)=y,则输出为 1,否则输出为 0。

发布于 2018 - 04 - 02 15:16


指示函数

AI 生成,仅供参考。

指示函数(Indicator Function,亦译“示性函数”)是数学中刻画二元逻辑关系的基础工具,通过“1”或“0”的取值标记“元素属于/不属于集合”“满足/不满足条件”,底层逻辑统一但符号与应用场景存在差异。

一、定义

设全集为 Ω \Omega Ω,集合 A ⊆ Ω A \subseteq \Omega AΩ,元素 x ∈ Ω x \in \Omega xΩ,指示函数的通用定义为:
I A ( x ) = { 1 若  x ∈ A ( 元素属于集合  A ) 0 若  x ∉ A ( 元素不属于集合  A ) \mathbb{I}_A (x) = \begin{cases} 1 & \text{若 } x \in A \quad (\text{元素属于集合 } A) \\ 0 & \text{若 } x \notin A \quad (\text{元素不属于集合 } A) \end{cases} IA(x)={10 xA(元素属于集合 A) x/A(元素不属于集合 A)
若通过条件命题刻画(适配“非显式集合”场景),可扩展为布尔表达式形式:
I ( P ( x ) ) = { 1 若  P ( x )  为真 ( 元素满足条件  P ) 0 若  P ( x )  为假 ( 元素不满足条件  P ) \mathbb{I} (P(x)) = \begin{cases} 1 & \text{若 } P(x) \text{ 为真} \quad (\text{元素满足条件 } P) \\ 0 & \text{若 } P(x) \text{ 为假} \quad (\text{元素不满足条件 } P) \end{cases} I(P(x))={10 P(x) 为真(元素满足条件 P) P(x) 为假(元素不满足条件 P)
其中 P ( x ) P(x) P(x) 是关于 x x x 的命题(如“ x > 5 x > 5 x>5”“ x x x 为质数”),此定义是后续所有表达形式与应用的逻辑基础。

二、符号记法系统

不同文献中指示函数的符号存在差异,需结合使用场景判断,同时规避与其他函数(如概率特征函数)的混淆。

符号形式名称/来源适用场景注意事项
I A ( x ) \mathbb{I}_A (x) IA(x)空心大写黑正体“I”(Indicator首字母)国际标准化表达,通用领域无歧义,推荐优先使用
1 A ( x ) \mathbf{1}_A (x) 1A(x)粗体“1”国际标准化表达,概率统计领域 I A ( x ) \mathbb{I}_A (x) IA(x) 等价,应用广泛
I A ( x ) I_A (x) IA(x)普通大写“I”初级教材、简化表达易与“单位矩阵”“积分符号”混淆,慎用
χ A ( x ) \chi_A (x) χA(x)希腊字母“chi”历史文献、函数分析高歧义风险:易与“概率特征函数”混淆,非必要不使用

三、表达形式

根据应用场景的需求,指示函数分为三类主要形式,三者逻辑一致但侧重不同,覆盖从基础集合论到应用场景的全范围。

(一)集合成员型(基础形式)

  1. 底层逻辑:直接刻画“元素-集合”的从属关系,是指示函数最原始、最基础的形式,为其他形式提供底层支撑。
  2. 符号与表达式:主流符号为 I A ( x ) \mathbb{I}_A (x) IA(x) 1 A ( x ) \mathbf{1}_A (x) 1A(x),简化形式为 I ( x ∈ A ) \mathbb{I} (x \in A) I(xA)(直接显式成员关系,增强直观性),表达式同定义的通用形式。
  3. 适用领域:集合论、实分析、测度论(基础数学领域),用于定义集合特征、计算集合基数(元素个数)、构建可测集的基本标识。
  4. 示例:设全集 Ω = { 1 , 2 , 3 , 4 , 5 } \Omega = \{1,2,3,4,5\} Ω={1,2,3,4,5},集合 A = { 2 , 4 } A = \{2,4\} A={2,4} Ω \Omega Ω 中的偶数子集),则 I A ( 2 ) = 1 \mathbb{I}_A (2) = 1 IA(2)=1 2 ∈ A 2 \in A 2A), I A ( 3 ) = 0 \mathbb{I}_A (3) = 0 IA(3)=0 3 ∉ A 3 \notin A 3/A);通过求和计算集合基数: ∑ x ∈ Ω I A ( x ) = 0 + 1 + 0 + 1 + 0 = 2 \sum_{x \in \Omega} \mathbb{I}_A (x) = 0+1+0+1+0 = 2 xΩIA(x)=0+1+0+1+0=2,结果与 A A A 的元素个数完全一致。

(二)条件满足型(应用扩展形式)

  1. 底层逻辑:将“条件命题”对应到“隐式集合”(即满足该条件的所有元素构成的集合),通过指示函数标记“元素是否满足条件”,是集合成员型向“非显式集合场景”的扩展。
  2. 符号与表达式:主流符号为 I ( P ( x ) ) \mathbb{I} (P(x)) I(P(x)) I P ( x ) \mathbb{I}_P (x) IP(x) P ( x ) P(x) P(x) 为条件命题),表达式同定义的布尔形式。
  3. 适用领域:概率论(标记事件发生与否)、优化理论(刻画约束条件是否满足),是连接基础数学与应用学科的关键形式。
  4. 示例
  • 概率论场景:设随机变量 X X X 表示掷骰子的结果( X ∈ { 1 , 2 , 3 , 4 , 5 , 6 } X \in \{1,2,3,4,5,6\} X{1,2,3,4,5,6}),事件 E = { X  为奇数 } E = \{X \text{ 为奇数}\} E={X 为奇数},则 I ( X  是奇数 ) \mathbb{I} (X \text{ 是奇数}) I(X 是奇数) X = 3 X=3 X=3 时取 1(事件 E E E 发生),在 X = 4 X=4 X=4 时取 0(事件 E E E 不发生);
  • 优化理论场景:设目标函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2,约束条件 x ≤ 10 x \leq 10 x10,则约束可通过指示函数表示为 I ( x ≤ 10 ) = 1 \mathbb{I} (x \leq 10) = 1 I(x10)=1,优化问题可写为 min ⁡ x f ( x ) subject to I ( x ≤ 10 ) = 1 \min_{x} f(x) \quad \text{subject to} \quad \mathbb{I} (x \leq 10) = 1 minxf(x)subject toI(x10)=1

(三)二元变量型(离散场景简化形式)

  1. 底层逻辑:针对离散变量(尤其是二元变量),直接标记“变量是否取特定离散值”,无需显式写出集合或条件,是条件满足型在“离散变量场景”的进一步简化。
  2. 符号与表达式:主流符号为 I ( x = a ) \mathbb{I} (x = a) I(x=a) a a a 为变量 x x x 的特定离散值);若 x ∈ { 0 , 1 } x \in \{0,1\} x{0,1}(二元变量),可简写为 I ( x ) \mathbb{I} (x) I(x)(默认标记 x = 1 x=1 x=1 的情况),表达式为:
    I ( x = a ) = { 1 x = a 0 x ≠ a \mathbb{I} (x = a) = \begin{cases} 1 & x = a \\ 0 & x \neq a \end{cases} I(x=a)={10x=ax=a
  3. 适用领域:统计学(分类数据标记)、机器学习(样本标签编码)、离散概率分布(如伯努利分布、二项分布),是数据科学中最常用的形式之一。
  4. 示例
  • 机器学习场景:二分类任务中,设正类样本标签为 y = 1 y=1 y=1,负类为 y = 0 y=0 y=0,则 I ( y = 1 ) = 1 \mathbb{I} (y=1) = 1 I(y=1)=1 标记正类样本, I ( y = 0 ) = 1 \mathbb{I} (y=0) = 1 I(y=0)=1 标记负类样本,是独热编码的底层逻辑;
  • 离散概率场景:若随机变量 X ∼ Bernoulli ( p ) X \sim \text{Bernoulli}(p) XBernoulli(p)(取值 1 的概率为 p p p,取值 0 的概率为 1 − p 1-p 1p),其概率质量函数可通过指示函数简洁表示为 P ( X = k ) = p I ( k = 1 ) ⋅ ( 1 − p ) I ( k = 0 ) P(X=k) = p^{\mathbb{I}(k=1)} \cdot (1-p)^{\mathbb{I}(k=0)} P(X=k)=pI(k=1)(1p)I(k=0) k = 0 , 1 k=0,1 k=0,1),无需分情况书写。

四、与“概率特征函数”的严格区分

指示函数与概率特征函数(Characteristic Function)是数学中易混淆的两个概念,二者在定义、功能、取值等维度存在本质差异。

概念数学表达式功能定位取值范围应用场景
指示函数 I A ( x ) = { 1 x ∈ A 0 x ∉ A \mathbb{I}_A (x) = \begin{cases} 1 & x \in A \\ 0 & x \notin A \end{cases} IA(x)={10xAx/A二元标记工具(归属/条件)实数集 { 0 , 1 } \{0,1\} {0,1}集合计数、事件标记、约束刻画、分类编码
概率特征函数 φ X ( t ) = E [ e i t X ] = ∫ Ω e i t X ( ω ) d P ( ω ) \begin{align*} {{\varphi }_{X}}(t) & =\mathbb{E}[{{e}^{itX}}] \\ & =\int_{\Omega }{{{e}^{itX(\omega )}}}dP(\omega ) \end{align*} φX(t)=E[eitX]=ΩeitX(ω)dP(ω)分布唯一标识工具复平面(实部、虚部均有值)确定随机变量分布、计算矩(期望、方差、协方差)

示例对比:对于正态分布 X ∼ Normal ( μ , σ 2 ) X \sim \text{Normal}(\mu, \sigma^2) XNormal(μ,σ2),其指示函数可表示为 I ( X ∈ [ μ − σ , μ + σ ] ) \mathbb{I} (X \in [\mu-\sigma, \mu+\sigma]) I(X[μσ,μ+σ])(标记 X X X 是否落在“均值 ±1 标准差”区间);而其概率特征函数为 φ X ( t ) = e i t μ − 1 2 t 2 σ 2 \varphi_X(t) = e^{it\mu - \frac{1}{2}t^2\sigma^2} φX(t)=eitμ21t2σ2,用于唯一确定正态分布的参数 μ \mu μ(均值)和 σ 2 \sigma^2 σ2(方差),二者功能完全无关。

五、跨领域应用拓展

指示函数在基础数学之外的多学科中均有重要应用。

  1. 函数分析与测度论:勒贝格积分中,指示函数是“简单函数”的基础构成单元——任意可测函数均可由一系列指示函数的线性组合逼近,即 f ( x ) = ∑ k = 1 n c k ⋅ I A k ( x ) f(x) = \sum_{k=1}^n c_k \cdot \mathbb{I}_{A_k}(x) f(x)=k=1nckIAk(x)(其中 c k c_k ck 为常数, A k A_k Ak 为可测集),这是定义勒贝格积分、计算复杂函数积分的重要思想。

  2. 计算机科学:算法分析与数据结构中,指示函数是“集合成员验证”的工程化实现——布尔数组的“0/1”取值本质就是指示函数:若数组 a r r [ i ] = 1 arr[i] = 1 arr[i]=1,表示元素 i ∈ i \in i 目标集合;若 a r r [ i ] = 0 arr[i] = 0 arr[i]=0,则表示 i ∉ i \notin i/ 目标集合,常用于哈希表(快速查找)、并查集(元素归属判断)等数据结构的底层逻辑。

  3. 经济学与社会学:实证分析中,指示函数被称为“虚拟变量”(Dummy Variable),用于处理分类变量(如性别、学历、地域)。例如,在个人收入回归模型中,用 I ( 性别 = 女性 ) \mathbb{I} (\text{性别}=女性) I(性别=女性) 标记女性样本,模型形式为 收入 = β 0 + β 1 ⋅ I ( 性别 = 女性 ) + β 2 ⋅ 教育年限 + ε \text{收入} = \beta_0 + \beta_1 \cdot \mathbb{I}(\text{性别}=女性) + \beta_2 \cdot \text{教育年限} + \varepsilon 收入=β0+β1I(性别=女性)+β2教育年限+ε,其中 β 1 \beta_1 β1 表示“女性相对于男性的收入差异”(控制教育年限这一变量后),是计量经济学的基础工具。

六、历史发展

指示函数的形式与应用随数学理论的发展逐步完善。

时期贡献学者发展
19 世纪末格奥尔格·康托尔(G. Cantor)伴随集合论的创立,首次提出“集合特征标记”的原始思想,为指示函数奠定逻辑基础
20 世纪初埃米尔·博雷尔(E. Borel)、亨利·勒贝格(H. Lebesgue)在测度论与积分理论研究中,将“集合特征标记”形式化为“指示函数”,明确其数学定义与符号,使其成为可操作的数学工具
20 世纪中叶安德雷·柯尔莫哥洛夫(A. N. Kolmogorov)在公理化概率论体系中,将“事件指示函数”定义为特殊的随机变量(事件指示变量),打通指示函数与概率论的连接
现代帕特里克·比林斯利(P. Billingsley)等在《Probability and Measure》等经典教材中,系统推广指示函数的标准化符号(如 I A ( x ) \mathbb{I}_A(x) IA(x))与跨场景应用,统一学术领域的表达习惯

七、使用指示函数时注意事项

  1. 符号统一性:不同文献可能混用 I A ( x ) \mathbb{I}_A(x) IA(x) 1 A ( x ) \mathbf{1}_A(x) 1A(x) χ A ( x ) \chi_A(x) χA(x) 等符号,但底层含义一致;优先选择 I A ( x ) \mathbb{I}_A(x) IA(x) 1 A ( x ) \mathbf{1}_A(x) 1A(x),避免使用 χ A ( x ) \chi_A(x) χA(x)(防止与概率特征函数混淆),遇到陌生符号需结合上下文判断。

  2. 扩展场景边界:模糊集合论中存在“模糊指示函数”(取值于 [ 0 , 1 ] [0,1] [0,1],表示元素属于集合的“程度”),但这是对传统二值指示函数的特殊扩展,不属于“规范表达形式”,需与经典二值指示函数明确区分,避免概念泛化。

  3. 计算验证:使用指示函数进行计数(如集合基数)或积分(如勒贝格积分)时,需先核对元素与集合的从属关系、条件命题的真假,避免因基础逻辑错误(如误判元素归属)导致后续计算偏差。

  4. 与相似概念的边界:除“概率特征函数”外,需注意指示函数与“特征向量”“示性类”等概念的区分——“特征向量”是线性代数中满足 A v = λ v A\mathbf{v} = \lambda\mathbf{v} Av=λv 的向量,“示性类”是拓扑学中的概念,均与指示函数的“二元标记”功能无关。

八、参考资料

此处列出支撑全文内容的权威资料,覆盖基础数学、概率论、经济学等领域。

  1. 经典教材
  • P. Billingsley,《Probability and Measure》(第 4 版):系统介绍测度论框架下指示函数的定义、积分性质,及在概率论中“事件指示变量”的应用(如期望计算);
  • H. L. Royden,《Real Analysis》(第 4 版):严谨证明指示函数在勒贝格积分中的基础作用,及可测函数由指示函数逼近的理论推导。
  1. 延伸阅读
  • R. Durrett,《Probability: Theory and Examples》(第 5 版):通过随机游走、马尔可夫链等实例,展示指示函数在概率模型构建与分析中的具体应用;
  • J. M. Wooldridge,《计量经济学导论》(第 7 版):详细讲解指示函数(虚拟变量)在实证经济学中的回归方法、系数解释与应用场景。

via:

// Compute speech/noise probability. // Speech/noise probability is returned in |probSpeechFinal|. // |magn| is the input magnitude spectrum. // |noise| is the noise spectrum. // |snrLocPrior| is the prior SNR for each frequency. // |snrLocPost| is the post SNR for each frequency. void SpeechNoiseProb(NS_CONTEXT *self, float *probSpeechFinal, const float *snrLocPrior, const float *logSnrLocPrior, const float *snrLocPost) { size_t i; int sgnMap; float invLrt, gainPrior, indPrior; float logLrtTimeAvgKsum, besselTmp; float indicator0, indicator1; float weightIndPrior0, weightIndPrior1; float threshPrior0, threshPrior1, threshPrior2; float widthPrior, widthPrior0, widthPrior1, widthPrior2; widthPrior0 = WIDTH_PR_MAP; // Width for pause region: lower range, so increase width in tanh map. widthPrior1 = 2.f * WIDTH_PR_MAP; widthPrior2 = 2.f * WIDTH_PR_MAP; // For spectral-difference measure. // Threshold parameters for features. threshPrior0 = self->priorModelPars[0]; threshPrior1 = self->priorModelPars[1]; threshPrior2 = self->priorModelPars[3]; // Sign for flatness feature. sgnMap = (int)(self->priorModelPars[2]); // Weight parameters for features. weightIndPrior0 = self->priorModelPars[4]; weightIndPrior1 = self->priorModelPars[5]; // Compute feature based on average LR factor. // This is the average over all frequencies of the smooth log LRT. logLrtTimeAvgKsum = 0; for (i = 0; i < self->magnLen; i++) { besselTmp = (snrLocPost[i] * snrLocPrior[i] + snrLocPrior[i]) / (snrLocPrior[i] + 1.f + EPSILON); self->logLrtTimeAvg[i] += LRT_TAVG * (besselTmp - logSnrLocPrior[i] - self->logLrtTimeAvg[i]); logLrtTimeAvgKsum += self->logLrtTimeAvg[i]; logLrtTimeAvgKsum += self->logLrtTimeAvg[i]; } logLrtTimeAvgKsum = logLrtTimeAvgKsum * self->normMagnLen; self->featureData[3] = logLrtTimeAvgKsum; // Done with computation of LR factor. // Compute the indicator functions. // Average LRT feature. widthPrior = widthPrior0; // Use larger width in tanh map for pause regions. if (logLrtTimeAvgKsum < threshPrior0) { widthPrior = widthPrior1; } // Compute indicator function: sigmoid map. indicator0 = 0.5f * tanhf(widthPrior * (logLrtTimeAvgKsum - threshPrior0)) + 0.5f; // Spectral flatness feature. widthPrior = widthPrior0; // Use larger width in tanh map for pause regions. if (sgnMap == 1 && (self->featureData[0] > threshPrior1)) { widthPrior = widthPrior1; } if (sgnMap == -1 && (self->featureData[0] < threshPrior1)) { widthPrior = widthPrior1; } // Compute indicator function: sigmoid map. // threshPrior1 == 0.5 indicator1 = 0.5f * tanhf((float)sgnMap * widthPrior * (threshPrior1 - self->featureData[0])) + 0.5f; // For template spectrum-difference. widthPrior = widthPrior0; // Use larger width in tanh map for pause regions. if (self->featureData[4] < threshPrior2) { widthPrior = widthPrior2; } // Combine the indicator function with the feature weights. // spec diff didn't actually work indPrior = weightIndPrior0 * indicator0 + weightIndPrior1 * indicator1; // Done with computing indicator function. // Compute the prior probability. self->priorSpeechProb += PRIOR_UPDATE * (indPrior - self->priorSpeechProb); // Make sure probabilities are within range: keep floor to 0.01. if (self->priorSpeechProb > 1.f) { self->priorSpeechProb = 1.f; } if (self->priorSpeechProb < 0.01f) { self->priorSpeechProb = 0.01f; } // -nan does not follow the above two ifs, and has to use this special treatment if (self->priorSpeechProb <= 1 && self->priorSpeechProb > 0.009) { } else { self->priorSpeechProb = 0.0; } // Final speech probability: combine prior model with LR factor:. gainPrior = (1.f - self->priorSpeechProb) / (self->priorSpeechProb + EPSILON); for (i = 0; i < self->magnLen; i++) { invLrt = expf(-self->logLrtTimeAvg[i]); invLrt = gainPrior * invLrt; probSpeechFinal[i] = 1.f / (1.f + invLrt); } }这一段呢
最新发布
09-03
make clean && make bj_sim_jzn_rui_db2.exe && make clean make[1]: Entering directory '/home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2' rm -f bj_sim_jzn_rui_db2.o bj_sim_jzn_rui_db2.c make[1]: Leaving directory '/home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2' make[1]: Entering directory '/home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2' /usr/pgsql-17/bin/ecpg -r no_indicator -I. -I/usr/pgsql-17/include bj_sim_jzn_rui_db2.pgc gcc -S -I. -I/usr/pgsql-17/include -I../../../include -Wall -Wextra -Wno-int-conversion -Wno-unused-parameter -Wno-stringop-truncation -Wno-implicit-function-declaration -O3 bj_sim_jzn_rui_db2.c gcc -S -I. -I/usr/pgsql-17/include -I../../../include -g -masm=intel bj_sim_jzn_rui_db2.c rm -f *.s gcc -c -I. -I/usr/pgsql-17/include -I../../../include -g bj_sim_jzn_rui_db2.c gcc -I. -I/usr/pgsql-17/include -I../../../include -g -o bj_sim_jzn_rui_db2.exe bj_sim_jzn_rui_db2.o ../../../lib/libBJZ_common.a /usr/bin/ld: bj_sim_jzn_rui_db2.o: in function `main_proc': /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:386: undefined reference to `ECPGprepare' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:387: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:392: undefined reference to `ECPGprepared_statement' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:392: undefined reference to `ECPGdo' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:393: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:394: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:394: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:399: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:415: undefined reference to `ECPGdo' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:434: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:434: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:435: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:440: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:512: undefined reference to `ECPGdo' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:513: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2/bj_sim_jzn_rui_db2.pgc:531: undefined reference to `ECPGget_sqlca' /usr/bin/ld: ../../../lib/libBJZ_common.a(fvs_z_sql.o): in function `fvs_z_sql_connect': /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:59: undefined reference to `ECPGconnect' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:60: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:63: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:69: undefined reference to `ECPGdo' /usr/bin/ld: ../../../lib/libBJZ_common.a(fvs_z_sql.o): in function `fvs_z_sql_commit': /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:109: undefined reference to `ECPGtrans' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:111: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:114: undefined reference to `ECPGget_sqlca' /usr/bin/ld: ../../../lib/libBJZ_common.a(fvs_z_sql.o): in function `fvs_z_sql_rollback': /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:142: undefined reference to `ECPGtrans' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:144: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:147: undefined reference to `ECPGget_sqlca' /usr/bin/ld: ../../../lib/libBJZ_common.a(fvs_z_sql.o): in function `fvs_z_dbstatus': /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:164: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:182: undefined reference to `ECPGget_sqlca' /usr/bin/ld: /home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:183: undefined reference to `ECPGget_sqlca' /usr/bin/ld: ../../../lib/libBJZ_common.a(fvs_z_sql.o):/home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/lib_common/fvs_z_sql.pgc:213: more undefined references to `ECPGget_sqlca' follow collect2: error: ld returned 1 exit status make[1]: *** [Makefile:45: bj_sim_jzn_rui_db2.exe] Error 1 make[1]: Leaving directory '/home/bx01/git/bx-db-server/program/svol01/bj/src/c/src/B_BJ_SIM11_080/bj_sim_jzn_rui_db2' make: *** [Makefile:41: all] Error 2
08-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值