HannWindow

HannWindow - 17

版本

  • 名稱HannWindow (GitHub)

  • 網域main

  • since_version17

  • 函式True

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此版本的運算子自版本 17 開始提供。

摘要

產生 Hann 視窗,如論文中所述 https://ieeexplore.ieee.org/document/1455106

函式主體

此運算子的函式定義。

<
  domain: "",
  opset_import: ["" : 17]
>
HannWindow <periodic,output_datatype>(size) => (output)
{
   A0 = Constant <value: tensor = float {0.5}> ()
   A1 = Constant <value: tensor = float {0.5}> ()
   A2 = Constant <value: tensor = float {0}> ()
   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

    表示視窗長度的純量值。

輸出

  • output (異質) - T2

    長度為 size 的 Hann 視窗。輸出形狀為:[size]。

型別約束

  • T1 in ( tensor(int32), tensor(int64) )

    將輸入大小約束為 int64_t。

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

    將輸出型別約束為數值張量。