布莱克曼窗口

BlackmanWindow - 17

版本

  • 名称: BlackmanWindow (GitHub)

  • 域名: main

  • since_version: 17

  • function: True

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本17起可用。

摘要

生成一个Blackman窗口,如论文https://ieeexplore.ieee.org/document/1455106中所述。

函数体

此运算符的函数定义。

<
  domain: "",
  opset_import: ["" : 17]
>
BlackmanWindow <periodic,output_datatype>(size) => (output)
{
   A0 = Constant <value: tensor = float {0.42}> ()
   A1 = Constant <value: tensor = float {0.5}> ()
   A2 = Constant <value: tensor = float {0.08}> ()
   Zero = Constant <value: tensor = float {0}> ()
   One = Constant <value: tensor = float {1}> ()
   Two = Constant <value: tensor = float {2}> ()
   Tau = Constant <value: tensor = float {6.28319}> ()
   Periodic_Size_FP = Cast <to: int = 1> (size)
   Symmetric_Size_FP = Sub (Periodic_Size_FP, One)
   IsPeriodic = Constant <value_int: int = @periodic> ()
   IsPeriodic_FP = Cast <to: int = 1> (IsPeriodic)
   IsSymmetric_FP = Sub (One, IsPeriodic_FP)
   Periodic_Component = Mul (Periodic_Size_FP, IsPeriodic_FP)
   Symmetric_Component = Mul (Symmetric_Size_FP, IsSymmetric_FP)
   Size_FP = Add (Periodic_Component, Symmetric_Component)
   AngularIncrement = Div (Tau, Size_FP)
   Range = Range (Zero, Periodic_Size_FP, One)
   RangeAngular = Mul (Range, AngularIncrement)
   TwoRangeAngular = Mul (RangeAngular, Two)
   CosTwoRangeAngular = Cos (TwoRangeAngular)
   A2_Component = Mul (A2, CosTwoRangeAngular)
   CosRangeAngular = Cos (RangeAngular)
   A1_Component = Mul (A1, CosRangeAngular)
   Temp0 = Sub (A0, A1_Component)
   Temp1 = Add (Temp0, A2_Component)
   output = Cast <to: int = @output_datatype> (Temp1)
}

属性

  • output_datatype - INT (默认值为 '1'):

    输出张量的数据类型。严格来说,必须是TensorProto中DataType枚举的值之一,这些值对应于T2。默认值为1 = FLOAT。

  • periodic - INT (默认值为 '1'):

    如果为1,返回一个用作周期函数的窗口。如果为0,返回一个对称窗口。当指定‘periodic’时,hann计算一个长度为size + 1的窗口并返回前size个点。默认值为1。

输入

  • size (异构) - T1:

    表示窗口长度的标量值。

输出

  • 输出 (异构) - T2:

    一个长度为 size 的 Blackman 窗口。输出的形状为:[size]。

类型约束

  • T1 在 ( tensor(int32), tensor(int64) ) 中:

    将输入大小限制为int64_t。

  • T2 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输出类型限制为数值张量。